Skip to content

Commit 43dd8f0

Browse files
committed
Move transaction GetMulti span creation to core
To simplify the clients (including the upcoming Scala support) and make sure spans are finished. Change-Id: Ic6929ed34c3fbe49ad793a7ab13c4773a5b5152b Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/231702 Reviewed-by: David Nault <[email protected]> Tested-by: Build Bot <[email protected]>
1 parent 3dc992b commit 43dd8f0

4 files changed

Lines changed: 16 additions & 25 deletions

File tree

core-io/src/main/java/com/couchbase/client/core/transaction/CoreTransactionAttemptContext.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,8 @@
164164

165165
import static com.couchbase.client.core.annotation.UsedBy.Project.SPRING_DATA_COUCHBASE;
166166
import static com.couchbase.client.core.cnc.TracingIdentifiers.TRANSACTION_OP_ATR_COMMIT;
167+
import static com.couchbase.client.core.cnc.TracingIdentifiers.TRANSACTION_OP_GET_MULTI_REPLICAS_FROM_PREFERRED_SERVER_GROUP;
168+
import static com.couchbase.client.core.cnc.TracingIdentifiers.TRANSACTION_OP_GET_MULTI;
167169
import static com.couchbase.client.core.config.BucketCapabilities.SUBDOC_REVIVE_DOCUMENT;
168170
import static com.couchbase.client.core.error.transaction.TransactionOperationFailedException.Builder.createError;
169171
import static com.couchbase.client.core.error.transaction.TransactionOperationFailedException.FinalErrorToRaise;
@@ -755,7 +757,10 @@ public ResetAndRetryGetMulti(String message) {
755757
static class BoundExceeded extends RuntimeException {
756758
}
757759

758-
public Mono<List<CoreTransactionOptionalGetMultiResult>> getMultiAlgo(List<CoreTransactionGetMultiSpec> specs, SpanWrapper pspan, CoreGetMultiOptions options, boolean replicasFromPreferredServerGroup) {
760+
public Mono<List<CoreTransactionOptionalGetMultiResult>> getMultiAlgo(List<CoreTransactionGetMultiSpec> specs, CoreGetMultiOptions options, boolean replicasFromPreferredServerGroup) {
761+
SpanWrapper pspan = SpanWrapperUtil.createOp(this, tracer(), null, null,
762+
replicasFromPreferredServerGroup ? TRANSACTION_OP_GET_MULTI_REPLICAS_FROM_PREFERRED_SERVER_GROUP : TRANSACTION_OP_GET_MULTI
763+
, attemptSpan);
759764

760765
if (replicasFromPreferredServerGroup) {
761766
if (core.environment().preferredServerGroup() == null) {
@@ -769,9 +774,10 @@ public Mono<List<CoreTransactionOptionalGetMultiResult>> getMultiAlgo(List<CoreT
769774
return Mono.error(new FeatureNotAvailableException("getMulti cannot be used in a transaction after any SQL++ commands have been executed. If possible then move the getMulti to before any SQL++ commands."));
770775
} else {
771776
return unlock(lockToken, "getMulti")
772-
.then(getMultiAlgoInternal(specs, pspan, options, replicasFromPreferredServerGroup));
777+
.then(getMultiAlgoInternal(specs, span, options, replicasFromPreferredServerGroup));
773778
}
774-
}));
779+
}))
780+
.doFinally(ignore -> pspan.finish());
775781
}
776782

777783
private Mono<List<CoreTransactionOptionalGetMultiResult>> getMultiAlgoInternal(List<CoreTransactionGetMultiSpec> specs, SpanWrapper pspan, CoreGetMultiOptions options, boolean replicasFromPreferredServerGroup) {

java-client/src/main/java/com/couchbase/client/java/transactions/ReactiveTransactionAttemptContext.java

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -170,13 +170,9 @@ public Mono<TransactionGetMultiResult> getMulti(List<TransactionGetMultiSpec> sp
170170
@Stability.Uncommitted
171171
public Mono<TransactionGetMultiResult> getMulti(List<TransactionGetMultiSpec> specs, TransactionGetMultiOptions options) {
172172
notNull(options, "options");
173-
RequestSpan span = CbTracing.newSpan(internal.core().context(), TRANSACTION_OP_GET_MULTI, internal.span());
174-
175173
return reactor.publishOnUserScheduler(
176-
internal.getMultiAlgo(TransactionGetMultiUtil.convert(specs), new SpanWrapper(span), options.build(), false)
177-
.map(result -> TransactionGetMultiUtil.convert(result, specs, serializer()))
178-
.doOnError(err -> span.status(RequestSpan.StatusCode.ERROR))
179-
.doOnTerminate(span::end));
174+
internal.getMultiAlgo(TransactionGetMultiUtil.convert(specs), options.build(), false)
175+
.map(result -> TransactionGetMultiUtil.convert(result, specs, serializer())));
180176
}
181177

182178
/**
@@ -195,13 +191,9 @@ public Mono<TransactionGetMultiReplicasFromPreferredServerGroupResult> getMultiR
195191
@Stability.Uncommitted
196192
public Mono<TransactionGetMultiReplicasFromPreferredServerGroupResult> getMultiReplicasFromPreferredServerGroup(List<TransactionGetMultiReplicasFromPreferredServerGroupSpec> specs, TransactionGetMultiReplicasFromPreferredServerGroupOptions options) {
197193
notNull(options, "options");
198-
RequestSpan span = CbTracing.newSpan(internal.core().context(), TRANSACTION_OP_GET_MULTI_REPLICAS_FROM_PREFERRED_SERVER_GROUP, internal.span());
199-
200194
return reactor.publishOnUserScheduler(
201-
internal.getMultiAlgo(TransactionGetMultiUtil.convertReplica(specs), new SpanWrapper(span), options.build(), true)
202-
.map(result -> TransactionGetMultiUtil.convertReplica(result, specs, serializer()))
203-
.doOnError(err -> span.status(RequestSpan.StatusCode.ERROR))
204-
.doOnTerminate(span::end));
195+
internal.getMultiAlgo(TransactionGetMultiUtil.convertReplica(specs), options.build(), true)
196+
.map(result -> TransactionGetMultiUtil.convertReplica(result, specs, serializer())));
205197
}
206198

207199
/**

java-client/src/main/java/com/couchbase/client/java/transactions/TransactionAttemptContext.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -184,9 +184,7 @@ public TransactionGetMultiResult getMulti(List<TransactionGetMultiSpec> specs) {
184184
@Stability.Uncommitted
185185
public TransactionGetMultiResult getMulti(List<TransactionGetMultiSpec> specs, TransactionGetMultiOptions options) {
186186
notNull(options, "options");
187-
RequestSpan span = CbTracing.newSpan(internal.core().context(), TRANSACTION_OP_GET_MULTI, internal.span());
188-
189-
return internal.getMultiAlgo(TransactionGetMultiUtil.convert(specs), new SpanWrapper(span), options.build(), false)
187+
return internal.getMultiAlgo(TransactionGetMultiUtil.convert(specs), options.build(), false)
190188
.map(result -> TransactionGetMultiUtil.convert(result, specs, serializer()))
191189
.block();
192190
}
@@ -207,9 +205,7 @@ public TransactionGetMultiReplicasFromPreferredServerGroupResult getMultiReplica
207205
@Stability.Uncommitted
208206
public TransactionGetMultiReplicasFromPreferredServerGroupResult getMultiReplicasFromPreferredServerGroup(List<TransactionGetMultiReplicasFromPreferredServerGroupSpec> specs, TransactionGetMultiReplicasFromPreferredServerGroupOptions options) {
209207
notNull(options, "options");
210-
RequestSpan span = CbTracing.newSpan(internal.core().context(), TRANSACTION_OP_GET_MULTI_REPLICAS_FROM_PREFERRED_SERVER_GROUP, internal.span());
211-
212-
return internal.getMultiAlgo(TransactionGetMultiUtil.convertReplica(specs), new SpanWrapper(span), options.build(), true)
208+
return internal.getMultiAlgo(TransactionGetMultiUtil.convertReplica(specs), options.build(), true)
213209
.map(result -> TransactionGetMultiUtil.convertReplica(result, specs, serializer()))
214210
.block();
215211
}

kotlin-client/src/main/kotlin/com/couchbase/client/kotlin/transactions/TransactionAttemptContext.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,11 +110,8 @@ public class TransactionAttemptContext internal constructor(
110110
mode: TransactionGetMultiMode?,
111111
replicasFromPreferredServerGroup: Boolean,
112112
): TransactionGetMultiResult {
113-
val tracingId = if (replicasFromPreferredServerGroup) TRANSACTION_OP_GET_MULTI_REPLICAS_FROM_PREFERRED_SERVER_GROUP else TRANSACTION_OP_GET_MULTI
114-
val span: RequestSpan = CbTracing.newSpan(internal.core().context(), tracingId, internal.span())
115-
116113
val internalSpecs = specs.mapIndexed { index, spec -> CoreTransactionGetMultiSpec(spec.collection.collectionId, spec.documentId, index) }
117-
val coreResults = internal.getMultiAlgo(internalSpecs, SpanWrapper(span), CoreGetMultiOptions(mode?.toCore()), replicasFromPreferredServerGroup).awaitSingle()
114+
val coreResults = internal.getMultiAlgo(internalSpecs, CoreGetMultiOptions(mode?.toCore()), replicasFromPreferredServerGroup).awaitSingle()
118115
return TransactionGetMultiResult(specs, coreResults, defaultJsonSerializer)
119116
}
120117

0 commit comments

Comments
 (0)