googleapis / googleapis/google-cloud-java

[java-firestore] `ServerSideTransaction.execute` ignores `PipelineExecuteOptions` argument

Offen
#13,094 0 Kommentare 0 Reaktionen 1 zugewiesene Person Beansprucht von @MarkDuckworth Auf GitHub ansehen
api: firestore
Vorherrschende Sprache
Java
Sterne
2.1k
Forks
1.2k
Ø Merge
1 T. 23 Std.
Gemergte PRs (30 T.)
154

Beschreibung

**Description:**

When executing a pipeline within a transaction, the `ServerSideTransaction.execute` method that accepts a `PipelineExecuteOptions` parameter completely ignores it and instantiates an empty options object instead.

**Steps to Reproduce / Code Snippet:**
In `google-cloud-firestore/src/main/java/com/google/cloud/firestore/ServerSideTransaction.java`:

```java
@Nonnull
@Override
public ApiFuture execute(
@Nonnull Pipeline pipeline, @Nonnull PipelineExecuteOptions options) {
try (TraceUtil.Scope ignored = transactionTraceContext.makeCurrent()) {
// BUG: ignores the 'options' parameter entirely
return pipeline.execute(new PipelineExecuteOptions(), transactionId, null);
}
}
```

Because of this, any custom options explicitly provided during `transaction.execute(pipeline, options)` get dropped before the underlying gRPC `ExecutePipelineRequest` is dispatched.

**Expected Behavior:**
The method should propagate the correctly populated `options` object provided in the method signature:

```java
@Nonnull
@Override
public ApiFuture execute(
@Nonnull Pipeline pipeline, @Nonnull PipelineExecuteOptions options) {
try (TraceUtil.Scope ignored = transactionTraceContext.makeCurrent()) {
return pipeline.execute(options, transactionId, null);
}
}
```

**Impact:**
Integration tests like `ITPipelineTest.testPipelineInTransactionsWithOptions` end up inadvertently testing with empty options because instances like `new PipelineExecuteOptions().with("foo", "bar")` are discarded silently.

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.