Uploaded image for project: 'Couchbase Java Client'
  1. Couchbase Java Client
  2. JCBC-1120

upsert fails in the multi cluster client

    XMLWordPrintable

Details

    • Improvement
    • Resolution: Fixed
    • Major
    • 2.5.0
    • None
    • None
    • None

    Description

      Running the java multi cluster client in clojure through the java interop feature. Basically the same code but in clojure as this: https://github.com/couchbaselabs/multi-cluster-java

      This is the code snippet I am running:

      (defn client
            "A client for a single compare-and-set register"
            [cluster bucket]
            (reify client/Client
                   (setup! [_ test node]
                           (info node "Creating client")
                           (let [obj (.put (. JsonObject create) "value" 0)
                                 doc (. JsonDocument create "jepsen-test-document" obj)
                                 clusterset1 (new HashSet #{"n1" "n2" "n3"})
                                 clusterset2 (new HashSet #{"n4" "n5" "n6"})
                                 clusterspec1 (. ClusterSpec create clusterset1)
                                 clusterspec2 (. ClusterSpec create clusterset2)
                                 clusterlist (java.util.Arrays/asList (into-array [clusterspec1 clusterspec2]))
                                 coord (. Coordinators isolated clusterlist 3000)
                                 opts (.failureInterval (.maxFailedOperations (. TrafficMonitoringFailureDetector options) 5) 60)
                                 detector (. FailureDetectors trafficMonitoring coord opts)
                                 mcc (.authenticate (new MultiClusterClient coord detector) "admin123" "pass123")
                                 bucket (.openBucket mcc "default" "")]
                                (Thread/sleep 5000)
                                (info "upserted:" (.upsert bucket doc (timeout) (timeunits)))
                                (info node "Client created")
                                (client cluster bucket)))

       

      Fails at the bottom on upsert

      stack trace:

      java.lang.IllegalStateException: Only AsyncSubject is allowed with deferAndWatch (is Observable)
        at com.couchbase.client.java.util.OnSubscribeDeferAndWatch.call(OnSubscribeDeferAndWatch.java:92) ~[couchbase-java-client-2.4.8-mca-dp1.jar:na]
        at com.couchbase.client.java.util.OnSubscribeDeferAndWatch.call(OnSubscribeDeferAndWatch.java:57) ~[couchbase-java-client-2.4.8-mca-dp1.jar:na]
        at rx.Observable.unsafeSubscribe(Observable.java:10346) ~[rxjava-1.2.10.jar:1.2.10]
        at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:48) ~[rxjava-1.2.10.jar:1.2.10]
        at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:33) ~[rxjava-1.2.10.jar:1.2.10]
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) ~[rxjava-1.2.10.jar:1.2.10]
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) ~[rxjava-1.2.10.jar:1.2.10]
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) ~[rxjava-1.2.10.jar:1.2.10]
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) ~[rxjava-1.2.10.jar:1.2.10]
        at rx.Observable.subscribe(Observable.java:10442) ~[rxjava-1.2.10.jar:1.2.10]
        at rx.Observable.subscribe(Observable.java:10409) ~[rxjava-1.2.10.jar:1.2.10]
        at rx.observables.BlockingObservable.blockForSingle(BlockingObservable.java:444) ~[rxjava-1.2.10.jar:1.2.10]
        at rx.observables.BlockingObservable.single(BlockingObservable.java:341) ~[rxjava-1.2.10.jar:1.2.10]
        at com.couchbase.client.mc.BucketProxy.upsert(BucketProxy.java:103) ~[multi-cluster-java-0.2.0.jar:na]
        at couchbase.core$client$reify__573.setup_BANG_(core.clj:228) ~[na:na]
        at jepsen.core$run_case_BANG_$fn__3373.invoke(core.clj:287) ~[jepsen-0.1.6-SNAPSHOT.jar:na]
        at clojure.lang.AFn.applyToHelper(AFn.java:154) ~[clojure-1.8.0.jar:na]
        at clojure.lang.AFn.applyTo(AFn.java:144) ~[clojure-1.8.0.jar:na]
        at clojure.core$apply.invokeStatic(core.clj:646) ~[clojure-1.8.0.jar:na]
        at clojure.core$apply.invoke(core.clj:641) ~[clojure-1.8.0.jar:na]
        at jepsen.util$fcatch$wrapper__945.doInvoke(util.clj:28) ~[jepsen-0.1.6-SNAPSHOT.jar:na]
        at clojure.lang.RestFn.invoke(RestFn.java:408) ~[clojure-1.8.0.jar:na]
        at jepsen.util$real_pmap$launcher__950$fn__951.invoke(util.clj:48) ~[jepsen-0.1.6-SNAPSHOT.jar:na]
        at clojure.core$binding_conveyor_fn$fn__4676.invoke(core.clj:1938) ~[clojure-1.8.0.jar:na]
        at clojure.lang.AFn.call(AFn.java:18) ~[clojure-1.8.0.jar:na]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_131]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_131]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_131]
        at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_131]

       

      using 

      multi-cluster-java-0.2.0.jar

      couchbase-core-io-1.4.8-mca-dp1.jar

      couchbase-java-client-2.4.8-mca-dp1.jar

      rxjava-1.2.10.jar

       

       

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            korrigan.clark Korrigan Clark (Inactive)
            korrigan.clark Korrigan Clark (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes

                PagerDuty