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

couchbase-transactions doesn't work with the latest version of the sdk

    XMLWordPrintable

Details

    • Bug
    • Resolution: User Error
    • Major
    • None
    • None
    • None
    • None
    • 0

    Description

      With the following dependencies:

       
      <dependency>
      <groupId>com.couchbase.client</groupId>
      <artifactId>java-client</artifactId>
      <version>3.3.4</version>
      </dependency>

      <dependency>
      <groupId>com.couchbase.client</groupId>
      <artifactId>couchbase-transactions</artifactId>
      <version>1.2.4</version>
      </dependency>
       
       
      this block of code works fine:
       

      import com.couchbase.client.core.error.DocumentNotFoundException;
      import com.couchbase.client.java.Bucket;
      import com.couchbase.client.java.Cluster;
      import com.couchbase.client.java.Collection;
      import com.couchbase.client.java.diagnostics.PingOptions;
      import com.couchbase.client.java.env.ClusterEnvironment;
      import com.couchbase.client.java.json.JsonArray;
      import com.couchbase.client.java.json.JsonObject;
      import com.couchbase.client.java.query.QueryResult;
      import com.couchbase.transactions.TransactionDurabilityLevel;
      import com.couchbase.transactions.TransactionGetResult;
      import com.couchbase.transactions.Transactions;
      import com.couchbase.transactions.config.TransactionConfigBuilder;
      import com.couchbase.transactions.error.TransactionCommitAmbiguous;
      import com.couchbase.transactions.error.TransactionFailed;
      import com.couchbase.transactions.log.TransactionEvent;
       
      import java.time.Duration;
      import java.util.UUID;
      import java.util.concurrent.atomic.AtomicReference;
       
      class Program {
          public static void main(String[] args) {
              var bucketName = "travel-sample";
       
              ClusterEnvironment env = ClusterEnvironment.builder().build();
              var cluster = Cluster.connect("couchbase://127.0.0.1", "Administrator", "password");
              Bucket bucket = cluster.bucket(bucketName);
              bucket.waitUntilReady(Duration.ofSeconds(30));
       
              TransactionConfigBuilder config = TransactionConfigBuilder.create()
                      .durabilityLevel(TransactionDurabilityLevel.MAJORITY_AND_PERSIST_TO_ACTIVE)
                      .expirationTime(Duration.ofSeconds(60));
              Transactions transactions = Transactions.create(cluster, config);
       
              var route1Id = "46586";
              var route2Id = "35816";
       
              // Pre-transaction
              JsonObject preroute1 = getDocByWhere(cluster, bucketName, "type='route' and id=" + route1Id);
              JsonObject preroute2 = getDocByWhere(cluster, bucketName, "type='route' and id=" + route2Id);
       
              System.out.printf(
                      "Before transaction - got %s's details: source airport: %s, destination airport: %s, airline: %s:%s \n",
                      route1Id, preroute1.getString("sourceairport"), preroute1.getString("destinationairport"),
                      preroute1.getString("airline"), preroute1.getString("airlineid"));
              System.out.printf(
                      "Before transaction - got %s's details: source airport: %s, destination airport: %s, airline: %s:%s \n",
                      route2Id, preroute2.getString("sourceairport"), preroute2.getString("destinationairport"),
                      preroute2.getString("airline"), preroute2.getString("airlineid"));
       
              // In-transaction
              try {
                  String swapId = swapAirlineRoute(transactions, cluster, bucketName, route1Id, route2Id);
                  if (swapId != null) {
                      JsonObject swapRecord = getDocByWhere(cluster, bucketName, "id='" + swapId + "'");
                      if (swapRecord != null) {
                          System.out.println("After transaction - swap route record: " + swapRecord);
                      }
                  }
              } catch (RuntimeException err) {
                  System.err.println("Transaction failed with: " + err.toString());
              }
       
              // Post-transaction
              JsonObject postroute1 = getDocByWhere(cluster, bucketName, "type='route' and id=" + route1Id);
              JsonObject postroute2 = getDocByWhere(cluster, bucketName, "type='route' and id=" + route2Id);
       
              System.out.printf(
                      "After transaction - got %s's details: source airport: %s, destination airport: %s, airline: %s:%s \n",
                      route1Id, postroute1.getString("sourceairport"), postroute1.getString("destinationairport"),
                      postroute1.getString("airline"), postroute1.getString("airlineid"));
              System.out.printf(
                      "After transaction - got %s's details: source airport: %s, destination airport: %s, airline: %s:%s \n",
                      route2Id, postroute2.getString("sourceairport"), postroute2.getString("destinationairport"),
                      postroute2.getString("airline"), postroute2.getString("airlineid"));
              System.exit(0);
          }
       
          private static JsonObject getDocByWhere(Cluster cluster, String bucketName, String where) {
              String sqry = "SELECT `" + bucketName + "`.* " +
                      "FROM `" + bucketName + "` " +
                      "WHERE " + where;
              QueryResult qr = cluster.query(sqry);
              return qr.rowsAsObject().size() > 0 ? qr.rowsAsObject().get(0) : null;
          }
       
          private static String swapAirlineRoute(Transactions transactions, Cluster cluster, String bucketName,
                                                 String route1Id,
                                                 String route2Id) {
              AtomicReference<String> swapId = new AtomicReference<>();
              try {
                  transactions.run(ctx -> {
                      JsonObject route1Content = getDocByWhere(cluster, bucketName, "type='route' and id=" + route1Id);
                      JsonObject route2Content = getDocByWhere(cluster, bucketName, "type='route' and id=" + route2Id);
       
                      System.out.printf("In transaction - got %s's details: %s\n", route1Id,
                              route1Content.getString("airlineid"));
                      System.out.printf("In transaction - got %s's details: %s\n", route2Id,
                              route2Content.getString("airlineid"));
       
                      String airline1 = route1Content.getString("airline");
                      String airlineid1 = route1Content.getString("airlineid");
                      JsonArray schedule1 = route1Content.getArray("schedule");
       
                      String airline2 = route2Content.getString("airline");
                      String airlineid2 = route2Content.getString("airlineid");
                      JsonArray schedule2 = route2Content.getArray("schedule");
       
                      swapId.set(UUID.randomUUID().toString());
       
                      JsonObject swapRecord = JsonObject.create().put("id", swapId.get())
                              .put("from_route", route1Id).put("to_route", route2Id)
                              .put("from_airline", airline1).put("from_airlineid", airlineid1).put("to_airline", airline2)
                              .put("to_airlineid", airlineid2).put("type", "Transactions_History")
                              .put("created", new java.util.Date().toString());
       
                      System.out.println("In transaction - creating a record of swap routes with UUID: " + swapId.get());
                      ctx.query("INSERT INTO `" + bucketName + "` VALUES ('" + swapId.get() + "', " + swapRecord + ")");
       
                      System.out.printf("In transaction - changing %s's airline to: %s\n", route1Id,
                              route2Content.getString("airlineid"));
                      System.out.printf("In transaction - changing %s's airline to: %s\n", route2Id,
                              route1Content.getString("airlineid"));
       
                      String updateRoute1 = "UPDATE `" + bucketName + "` " +
                              "SET airline='" + airline2 + "', airlineid='" + airlineid2 + "', schedule=" + schedule2 +
                              " WHERE type='route' and id = " + route1Id;
                      ctx.query(updateRoute1);
       
                      String updateRoute2 = "UPDATE `" + bucketName + "` " +
                              "SET airline='" + airline1 + "', airlineid='" + airlineid1 + "', schedule=" + schedule1 +
                              " WHERE type='route' and id = " + route2Id;
                      ctx.query(updateRoute2);
       
                      System.out.println("In transaction - about to commit");
                      ctx.commit();
                  });
       
                  return swapId.get();
              } catch (TransactionCommitAmbiguous err) {
                  System.err.println("Transaction " + err.result().transactionId() + " possibly committed:");
                  err.result().log().logs().forEach(System.err::println);
              } catch (TransactionFailed err) {
                  if (err.getCause() instanceof DocumentNotFoundException) {
                      throw new NoRouteFound();
                  } else {
                      System.err.println("Transaction " + err.result().transactionId() + " did not reach commit:");
                      err.result().log().logs().forEach(System.err::println);
                  }
              }
       
              return null;
          }
      }
       
      class NoRouteFound extends RuntimeException {
          private static final long serialVersionUID = 1L;
      }
       
       

      But, if I update it to:
      <dependency>
      <groupId>com.couchbase.client</groupId>
      <artifactId>java-client</artifactId>
      <version>3.4.9</version>
      </dependency>
       
      Then I get:
       
       

      [ WARN] (cb-txn-11) throwIfFatal detected a jvm fatal exception, which is thrown and logged below: - java.lang.NoSuchMethodError: 'com.couchbase.client.java.query.QueryAccessor com.couchbase.client.java.AsyncCluster.queryAccessor()'
      java.lang.NoSuchMethodError: 'com.couchbase.client.java.query.QueryAccessor com.couchbase.client.java.AsyncCluster.queryAccessor()'
          at com.couchbase.client.java.SDKAccessUtil.queryAccessor(SDKAccessUtil.java:31)
          at com.couchbase.transactions.AttemptContextReactive.lambda$queryInternal$284(AttemptContextReactive.java:4285)
          at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:44)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)
          at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)
          at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64)
          at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203)
          at reactor.core.publisher.Operators.complete(Operators.java:137)
          at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46)
          at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
          at reactor.core.publisher.Mono.subscribe(Mono.java:4444)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263)
          at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)
          at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64)
          at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
          at reactor.core.publisher.Mono.subscribe(Mono.java:4444)
          at reactor.core.publisher.MonoIgnorePublisher.subscribe(MonoIgnorePublisher.java:57)
          at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
          at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:292)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:187)
          at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:158)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:292)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:187)
          at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2508)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onSubscribe(MonoIgnoreThen.java:134)
          at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:55)
          at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
          at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203)
          at reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onComplete(MonoIgnoreElements.java:89)
          at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onComplete(Operators.java:2168)
          at reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.doComplete(FluxPublishOn.java:505)
          at reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.checkTerminated(FluxPublishOn.java:552)
          at reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.runAsync(FluxPublishOn.java:432)
          at reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.run(FluxPublishOn.java:527)
          at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)
          at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)
          at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
          at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
          at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
          at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
          at java.base/java.lang.Thread.run(Thread.java:829)
      [ WARN] (cb-txn-11) throwIfFatal detected a jvm fatal exception, which is thrown and logged below: - java.lang.NoSuchMethodError: 'com.couchbase.client.java.query.QueryAccessor com.couchbase.client.java.AsyncCluster.queryAccessor()'
      java.lang.NoSuchMethodError: 'com.couchbase.client.java.query.QueryAccessor com.couchbase.client.java.AsyncCluster.queryAccessor()'
          at com.couchbase.client.java.SDKAccessUtil.queryAccessor(SDKAccessUtil.java:31)
          at com.couchbase.transactions.AttemptContextReactive.lambda$queryInternal$284(AttemptContextReactive.java:4285)
          at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:44)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)
          at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)
          at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64)
          at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203)
          at reactor.core.publisher.Operators.complete(Operators.java:137)
          at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46)
          at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
          at reactor.core.publisher.Mono.subscribe(Mono.java:4444)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263)
          at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)
          at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64)
          at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
          at reactor.core.publisher.Mono.subscribe(Mono.java:4444)
          at reactor.core.publisher.MonoIgnorePublisher.subscribe(MonoIgnorePublisher.java:57)
          at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
          at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:292)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:187)
          at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:158)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:292)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:187)
          at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2508)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onSubscribe(MonoIgnoreThen.java:134)
          at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:55)
          at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
          at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203)
          at reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onComplete(MonoIgnoreElements.java:89)
          at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onComplete(Operators.java:2168)
          at reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.doComplete(FluxPublishOn.java:505)
          at reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.checkTerminated(FluxPublishOn.java:552)
          at reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.runAsync(FluxPublishOn.java:432)
          at reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.run(FluxPublishOn.java:527)
          at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)
          at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)
          at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
          at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
          at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
          at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
          at java.base/java.lang.Thread.run(Thread.java:829)
      [ WARN] (cb-txn-11) throwIfFatal detected a jvm fatal exception, which is thrown and logged below: - java.lang.NoSuchMethodError: 'com.couchbase.client.java.query.QueryAccessor com.couchbase.client.java.AsyncCluster.queryAccessor()'
      java.lang.NoSuchMethodError: 'com.couchbase.client.java.query.QueryAccessor com.couchbase.client.java.AsyncCluster.queryAccessor()'
          at com.couchbase.client.java.SDKAccessUtil.queryAccessor(SDKAccessUtil.java:31)
          at com.couchbase.transactions.AttemptContextReactive.lambda$queryInternal$284(AttemptContextReactive.java:4285)
          at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:44)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)
          at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)
          at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64)
          at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203)
          at reactor.core.publisher.Operators.complete(Operators.java:137)
          at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46)
          at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
          at reactor.core.publisher.Mono.subscribe(Mono.java:4444)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263)
          at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)
          at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64)
          at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
          at reactor.core.publisher.Mono.subscribe(Mono.java:4444)
          at reactor.core.publisher.MonoIgnorePublisher.subscribe(MonoIgnorePublisher.java:57)
          at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
          at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:292)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:187)
          at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:158)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:292)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:187)
          at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2508)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onSubscribe(MonoIgnoreThen.java:134)
          at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:55)
          at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
          at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)
          at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203)
          at reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onComplete(MonoIgnoreElements.java:89)
          at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onComplete(Operators.java:2168)
          at reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.doComplete(FluxPublishOn.java:505)
          at reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.checkTerminated(FluxPublishOn.java:552)
          at reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.runAsync(FluxPublishOn.java:432)
          at reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.run(FluxPublishOn.java:527)
          at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)
          at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)
          at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
          at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
          at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
          at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
          at java.base/java.lang.Thread.run(Thread.java:829)
      [ WARN] (cb-txn-11) throwIfFatal detected a jvm fatal exception, which is thrown and logged below: - java.lang.NoSuchMethodError: 'com.couchbase.client.java.query.QueryAccessor com.couchbase.client.java.AsyncCluster.queryAccessor()'
      java.lang.NoSuchMethodError: 'com.couchbase.client.java.query.QueryAccessor com.couchbase.client.java.AsyncCluster.queryAccessor()'
          at com.couchbase.client.java.SDKAccessUtil.queryAccessor(SDKAccessUtil.java:31)
      

      Attachments

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

        Activity

          People

            david.nault David Nault
            denis.rosa Denis Rosa
            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