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) |