From 60be349890f50a4875a6ba2e3091331c573ba292 Mon Sep 17 00:00:00 2001 From: Sushan Bhattarai Date: Mon, 26 Jan 2026 02:17:56 -0500 Subject: [PATCH 1/7] fix(bigtable): fix channel tracer start --- .../v2/stub/metrics/ChannelPoolMetricsTracer.java | 3 +-- .../gaxx/grpc/BigtableTransportChannelProvider.java | 11 ++++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracer.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracer.java index e0b55f3272ee..ddc855637f01 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracer.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracer.java @@ -88,8 +88,7 @@ public void registerLoadBalancingStrategy(String lbPolicy) { /** Starts the periodic collection. */ public ScheduledFuture start(ScheduledExecutorService scheduler) { - return scheduler.scheduleAtFixedRate( - this, SAMPLING_PERIOD_SECONDS, SAMPLING_PERIOD_SECONDS, TimeUnit.SECONDS); + return scheduler.scheduleAtFixedRate(this, 0, SAMPLING_PERIOD_SECONDS, TimeUnit.SECONDS); } @Override diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/gaxx/grpc/BigtableTransportChannelProvider.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/gaxx/grpc/BigtableTransportChannelProvider.java index a38e8ad602b8..49ad16ba3bef 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/gaxx/grpc/BigtableTransportChannelProvider.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/gaxx/grpc/BigtableTransportChannelProvider.java @@ -30,6 +30,8 @@ import java.util.Map; import java.util.concurrent.Executor; import java.util.concurrent.ScheduledExecutorService; +import java.util.logging.Level; +import java.util.logging.Logger; import javax.annotation.Nullable; /** @@ -38,7 +40,7 @@ */ @InternalApi public final class BigtableTransportChannelProvider implements TransportChannelProvider { - + static final Logger LOG = Logger.getLogger(BigtableTransportChannelProvider.class.getName()); private final InstantiatingGrpcChannelProvider delegate; private final ChannelPrimer channelPrimer; @Nullable private final ChannelPoolMetricsTracer channelPoolMetricsTracer; @@ -168,6 +170,13 @@ public TransportChannel getTransportChannel() throws IOException { channelPoolMetricsTracer.registerChannelInsightsProvider(btChannelPool::getChannelInfos); channelPoolMetricsTracer.registerLoadBalancingStrategy( btPoolSettings.getLoadBalancingStrategy().name()); + if (backgroundExecutor != null) { + channelPoolMetricsTracer.start(backgroundExecutor); + } else { + LOG.log( + Level.WARNING, + "backgroundExecutor is null, ChannelPoolMetricsTracer cannot be started."); + } } return GrpcTransportChannel.create(btChannelPool); From ea7a0a0eaa4f460875cf5fc46ad8c22906a125fa Mon Sep 17 00:00:00 2001 From: Sushan Bhattarai Date: Fri, 13 Feb 2026 15:28:25 -0500 Subject: [PATCH 2/7] fix(bigtable): drop redudant fields from internal otel metrics which are already in monitored resource --- .../data/v2/stub/BigtableClientContext.java | 4 +- .../metrics/ChannelPoolMetricsTracer.java | 62 ++++++++++++------- .../metrics/ChannelPoolMetricsTracerTest.java | 7 +-- 3 files changed, 41 insertions(+), 32 deletions(-) diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableClientContext.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableClientContext.java index 0d27f60d4ed5..c7634bdc701a 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableClientContext.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableClientContext.java @@ -121,9 +121,7 @@ public static BigtableClientContext create(EnhancedBigtableStubSettings settings .getInternalMetricsProvider() .createOtelProvider(settings, credentials, backgroundExecutor); if (internalOtel != null) { - channelPoolMetricsTracer = - new ChannelPoolMetricsTracer( - internalOtel, EnhancedBigtableStub.createBuiltinAttributes(builder.build())); + channelPoolMetricsTracer = new ChannelPoolMetricsTracer(internalOtel); // Configure grpc metrics configureGrpcOtel(transportProvider, internalOtel); diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracer.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracer.java index ddc855637f01..d60d773303f5 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracer.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracer.java @@ -32,7 +32,6 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; import java.util.logging.Logger; -import javax.annotation.Nullable; @InternalApi("For internal use only") public class ChannelPoolMetricsTracer implements Runnable { @@ -45,15 +44,11 @@ public class ChannelPoolMetricsTracer implements Runnable { private final AtomicReference bigtableChannelInsightsProviderRef = new AtomicReference<>(); private final AtomicReference lbPolicyRef = new AtomicReference<>("ROUND_ROBIN"); - private final Attributes commonAttrs; // Attributes for unary and streaming RPCs, built on demand in run() - @Nullable private Attributes unaryAttributes; - @Nullable private Attributes streamingAttributes; - public ChannelPoolMetricsTracer(OpenTelemetry openTelemetry, Attributes commonAttrs) { + public ChannelPoolMetricsTracer(OpenTelemetry openTelemetry) { Meter meter = openTelemetry.getMeter(METER_NAME); - this.commonAttrs = commonAttrs; this.outstandingRpcsHistogram = meter .histogramBuilder(OUTSTANDING_RPCS_PER_CHANNEL_NAME) @@ -98,35 +93,54 @@ public void run() { logger.warning("No Bigtable ChannelPoolObserver available"); return; // Not registered yet } - String lbPolicy = lbPolicyRef.get(); - - // Build attributes if they haven't been built yet. - if (unaryAttributes == null || streamingAttributes == null) { - Attributes baseAttrs = commonAttrs.toBuilder().put("lb_policy", lbPolicy).build(); - this.unaryAttributes = baseAttrs.toBuilder().put("streaming", false).build(); - this.streamingAttributes = baseAttrs.toBuilder().put("streaming", true).build(); - } List channelInsights = channelInsightsProvider.getChannelInfos(); if (channelInsights == null || channelInsights.isEmpty()) { return; } + + String lbPolicy = lbPolicyRef.get(); + + // Build the four permutations once per run to avoid allocations in the channel loop + Attributes dpUnaryAttrs = + Attributes.builder() + .put("transport_type", "directpath") + .put("streaming", false) + .put("lb_policy", lbPolicy) + .build(); + Attributes dpStreamingAttrs = + Attributes.builder() + .put("transport_type", "directpath") + .put("streaming", true) + .put("lb_policy", lbPolicy) + .build(); + Attributes cpUnaryAttrs = + Attributes.builder() + .put("transport_type", "cloudpath") + .put("streaming", false) + .put("lb_policy", lbPolicy) + .build(); + Attributes cpStreamingAttrs = + Attributes.builder() + .put("transport_type", "cloudpath") + .put("streaming", true) + .put("lb_policy", lbPolicy) + .build(); + for (BigtableChannelObserver info : channelInsights) { - String transportTypeValue = info.isAltsChannel() ? "DIRECTPATH" : "CLOUDPATH"; - this.unaryAttributes = - this.unaryAttributes.toBuilder().put("transport_type", transportTypeValue).build(); - this.streamingAttributes = - this.streamingAttributes.toBuilder().put("transport_type", transportTypeValue).build(); + Attributes unaryAttrs = info.isAltsChannel() ? dpUnaryAttrs : cpUnaryAttrs; + Attributes streamingAttrs = info.isAltsChannel() ? dpStreamingAttrs : cpStreamingAttrs; long currentOutstandingUnaryRpcs = info.getOutstandingUnaryRpcs(); long currentOutstandingStreamingRpcs = info.getOutstandingStreamingRpcs(); - // Record outstanding unary RPCs with streaming=false - outstandingRpcsHistogram.record(currentOutstandingUnaryRpcs, unaryAttributes); - // Record outstanding streaming RPCs with streaming=true - outstandingRpcsHistogram.record(currentOutstandingStreamingRpcs, streamingAttributes); + + // Record outstanding RPCs with the transport_type, streaming, and lb_policy attributes + outstandingRpcsHistogram.record(currentOutstandingUnaryRpcs, unaryAttrs); + outstandingRpcsHistogram.record(currentOutstandingStreamingRpcs, streamingAttrs); long errors = info.getAndResetErrorCount(); - perConnectionErrorCountHistogram.record(errors, commonAttrs); + // Record errors with empty attributes as requested + perConnectionErrorCountHistogram.record(errors, Attributes.empty()); } } } diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracerTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracerTest.java index bbe26b20306d..855709503e9c 100644 --- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracerTest.java +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracerTest.java @@ -60,7 +60,6 @@ public class ChannelPoolMetricsTracerTest { private ArgumentCaptor runnableCaptor; private ChannelPoolMetricsTracer tracker; - private Attributes baseAttributes; @Mock private BigtableChannelPoolObserver mockInsightsProvider; @Mock private BigtableChannelObserver mockInsight1; @@ -74,9 +73,7 @@ public void setUp() { OpenTelemetry openTelemetry = OpenTelemetrySdk.builder().setMeterProvider(meterProvider).build(); - baseAttributes = Attributes.builder().build(); - - tracker = new ChannelPoolMetricsTracer(openTelemetry, baseAttributes); + tracker = new ChannelPoolMetricsTracer(openTelemetry); runnableCaptor = ArgumentCaptor.forClass(Runnable.class); // Configure mockScheduler to capture the runnable when tracker.start() is called @@ -114,7 +111,7 @@ private Attributes getExpectedErrorAttributes() { private static Attributes getExpectedRpcAttributes(String lbPolicy, boolean streaming) { return Attributes.builder() - .put(AttributeKey.stringKey("transport_type"), "CLOUDPATH") + .put(AttributeKey.stringKey("transport_type"), "cloudpath") .put(AttributeKey.stringKey("lb_policy"), lbPolicy) .put(AttributeKey.booleanKey("streaming"), streaming) .build(); From 70a36944239aa00d82913480060f5cb123bb0332 Mon Sep 17 00:00:00 2001 From: Sushan Bhattarai Date: Fri, 13 Feb 2026 15:29:11 -0500 Subject: [PATCH 3/7] fix --- .../data/v2/stub/metrics/ChannelPoolMetricsTracer.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracer.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracer.java index d60d773303f5..6357addcd5c5 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracer.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracer.java @@ -101,7 +101,6 @@ public void run() { String lbPolicy = lbPolicyRef.get(); - // Build the four permutations once per run to avoid allocations in the channel loop Attributes dpUnaryAttrs = Attributes.builder() .put("transport_type", "directpath") @@ -133,13 +132,11 @@ public void run() { long currentOutstandingUnaryRpcs = info.getOutstandingUnaryRpcs(); long currentOutstandingStreamingRpcs = info.getOutstandingStreamingRpcs(); - - // Record outstanding RPCs with the transport_type, streaming, and lb_policy attributes outstandingRpcsHistogram.record(currentOutstandingUnaryRpcs, unaryAttrs); outstandingRpcsHistogram.record(currentOutstandingStreamingRpcs, streamingAttrs); long errors = info.getAndResetErrorCount(); - // Record errors with empty attributes as requested + // Record errors with empty attributes. perConnectionErrorCountHistogram.record(errors, Attributes.empty()); } } From 20ce7070168faffabcfe04d5482016b30db3c8b6 Mon Sep 17 00:00:00 2001 From: Sushan Bhattarai Date: Fri, 13 Feb 2026 15:32:17 -0500 Subject: [PATCH 4/7] fix --- .../data/v2/stub/metrics/ChannelPoolMetricsTracer.java | 2 +- .../gaxx/grpc/BigtableTransportChannelProvider.java | 9 --------- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracer.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracer.java index 6357addcd5c5..109283c2af37 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracer.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracer.java @@ -83,7 +83,7 @@ public void registerLoadBalancingStrategy(String lbPolicy) { /** Starts the periodic collection. */ public ScheduledFuture start(ScheduledExecutorService scheduler) { - return scheduler.scheduleAtFixedRate(this, 0, SAMPLING_PERIOD_SECONDS, TimeUnit.SECONDS); + return scheduler.scheduleAtFixedRate(this, SAMPLING_PERIOD_SECONDS, SAMPLING_PERIOD_SECONDS, TimeUnit.SECONDS); } @Override diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/gaxx/grpc/BigtableTransportChannelProvider.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/gaxx/grpc/BigtableTransportChannelProvider.java index 49ad16ba3bef..4f46e672d765 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/gaxx/grpc/BigtableTransportChannelProvider.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/gaxx/grpc/BigtableTransportChannelProvider.java @@ -40,7 +40,6 @@ */ @InternalApi public final class BigtableTransportChannelProvider implements TransportChannelProvider { - static final Logger LOG = Logger.getLogger(BigtableTransportChannelProvider.class.getName()); private final InstantiatingGrpcChannelProvider delegate; private final ChannelPrimer channelPrimer; @Nullable private final ChannelPoolMetricsTracer channelPoolMetricsTracer; @@ -170,14 +169,6 @@ public TransportChannel getTransportChannel() throws IOException { channelPoolMetricsTracer.registerChannelInsightsProvider(btChannelPool::getChannelInfos); channelPoolMetricsTracer.registerLoadBalancingStrategy( btPoolSettings.getLoadBalancingStrategy().name()); - if (backgroundExecutor != null) { - channelPoolMetricsTracer.start(backgroundExecutor); - } else { - LOG.log( - Level.WARNING, - "backgroundExecutor is null, ChannelPoolMetricsTracer cannot be started."); - } - } return GrpcTransportChannel.create(btChannelPool); } From 37bf5eeea95cd852c255f1ec066a34e24a7844a6 Mon Sep 17 00:00:00 2001 From: Sushan Bhattarai Date: Fri, 13 Feb 2026 15:33:48 -0500 Subject: [PATCH 5/7] fix --- .../bigtable/gaxx/grpc/BigtableTransportChannelProvider.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/gaxx/grpc/BigtableTransportChannelProvider.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/gaxx/grpc/BigtableTransportChannelProvider.java index 4f46e672d765..9f79c7bffb98 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/gaxx/grpc/BigtableTransportChannelProvider.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/gaxx/grpc/BigtableTransportChannelProvider.java @@ -168,7 +168,8 @@ public TransportChannel getTransportChannel() throws IOException { if (channelPoolMetricsTracer != null) { channelPoolMetricsTracer.registerChannelInsightsProvider(btChannelPool::getChannelInfos); channelPoolMetricsTracer.registerLoadBalancingStrategy( - btPoolSettings.getLoadBalancingStrategy().name()); + btPoolSettings.getLoadBalancingStrategy().name()); + } return GrpcTransportChannel.create(btChannelPool); } From 88b9c72d3eb798ab7e77e1d424696b47c01d506c Mon Sep 17 00:00:00 2001 From: Sushan Bhattarai Date: Fri, 13 Feb 2026 15:34:53 -0500 Subject: [PATCH 6/7] fix --- .../data/v2/stub/metrics/ChannelPoolMetricsTracer.java | 3 ++- .../bigtable/gaxx/grpc/BigtableTransportChannelProvider.java | 4 +--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracer.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracer.java index 109283c2af37..ea849cf8ce6c 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracer.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/ChannelPoolMetricsTracer.java @@ -83,7 +83,8 @@ public void registerLoadBalancingStrategy(String lbPolicy) { /** Starts the periodic collection. */ public ScheduledFuture start(ScheduledExecutorService scheduler) { - return scheduler.scheduleAtFixedRate(this, SAMPLING_PERIOD_SECONDS, SAMPLING_PERIOD_SECONDS, TimeUnit.SECONDS); + return scheduler.scheduleAtFixedRate( + this, SAMPLING_PERIOD_SECONDS, SAMPLING_PERIOD_SECONDS, TimeUnit.SECONDS); } @Override diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/gaxx/grpc/BigtableTransportChannelProvider.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/gaxx/grpc/BigtableTransportChannelProvider.java index 9f79c7bffb98..e21c100c9ca2 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/gaxx/grpc/BigtableTransportChannelProvider.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/gaxx/grpc/BigtableTransportChannelProvider.java @@ -30,8 +30,6 @@ import java.util.Map; import java.util.concurrent.Executor; import java.util.concurrent.ScheduledExecutorService; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.annotation.Nullable; /** @@ -168,7 +166,7 @@ public TransportChannel getTransportChannel() throws IOException { if (channelPoolMetricsTracer != null) { channelPoolMetricsTracer.registerChannelInsightsProvider(btChannelPool::getChannelInfos); channelPoolMetricsTracer.registerLoadBalancingStrategy( - btPoolSettings.getLoadBalancingStrategy().name()); + btPoolSettings.getLoadBalancingStrategy().name()); } return GrpcTransportChannel.create(btChannelPool); From d1e849ddeb079480499a385b1b23b6a111dc9cce Mon Sep 17 00:00:00 2001 From: cloud-java-bot Date: Tue, 17 Feb 2026 16:34:44 +0000 Subject: [PATCH 7/7] chore: generate libraries at Tue Feb 17 16:32:22 UTC 2026 --- .../bigtable/testproxy/CbtTestProxy.java | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/test-proxy/src/main/java/com/google/cloud/bigtable/testproxy/CbtTestProxy.java b/test-proxy/src/main/java/com/google/cloud/bigtable/testproxy/CbtTestProxy.java index f977a13e58b0..d2147e6167da 100644 --- a/test-proxy/src/main/java/com/google/cloud/bigtable/testproxy/CbtTestProxy.java +++ b/test-proxy/src/main/java/com/google/cloud/bigtable/testproxy/CbtTestProxy.java @@ -289,8 +289,7 @@ public void mutateRow( // This response is empty. client.dataClient().mutateRow(mutation); } catch (ApiException e) { - responseObserver.onNext( - MutateRowResult.newBuilder().setStatus(convertStatus(e)).build()); + responseObserver.onNext(MutateRowResult.newBuilder().setStatus(convertStatus(e)).build()); responseObserver.onCompleted(); return; } catch (StatusRuntimeException e) { @@ -342,8 +341,7 @@ public void bulkMutateRows( responseObserver.onCompleted(); return; } catch (ApiException e) { - responseObserver.onNext( - MutateRowsResult.newBuilder().setStatus(convertStatus(e)).build()); + responseObserver.onNext(MutateRowsResult.newBuilder().setStatus(convertStatus(e)).build()); responseObserver.onCompleted(); return; } catch (StatusRuntimeException e) { @@ -395,8 +393,7 @@ public void readRow(ReadRowRequest request, StreamObserver responseOb logger.info(String.format("readRow() did not find row: %s", request.getRowKey())); } } catch (ApiException e) { - responseObserver.onNext( - RowResult.newBuilder().setStatus(convertStatus(e)).build()); + responseObserver.onNext(RowResult.newBuilder().setStatus(convertStatus(e)).build()); responseObserver.onCompleted(); return; } catch (StatusRuntimeException e) { @@ -440,8 +437,7 @@ public void readRows(ReadRowsRequest request, StreamObserver respons // Note that the default instance == OK resultBuilder.setStatus(com.google.rpc.Status.getDefaultInstance()).build()); } catch (ApiException e) { - responseObserver.onNext( - RowsResult.newBuilder().setStatus(convertStatus(e)).build()); + responseObserver.onNext(RowsResult.newBuilder().setStatus(convertStatus(e)).build()); responseObserver.onCompleted(); return; } catch (StatusRuntimeException e) { @@ -558,8 +554,7 @@ public void sampleRowKeys( try { keyOffsets = client.dataClient().sampleRowKeys(tableId); } catch (ApiException e) { - responseObserver.onNext( - SampleRowKeysResult.newBuilder().setStatus(convertStatus(e)).build()); + responseObserver.onNext(SampleRowKeysResult.newBuilder().setStatus(convertStatus(e)).build()); responseObserver.onCompleted(); return; } catch (StatusRuntimeException e) { @@ -643,8 +638,7 @@ public void readModifyWriteRow( "readModifyWriteRow() did not find row: %s", request.getRequest().getRowKey())); } } catch (ApiException e) { - responseObserver.onNext( - RowResult.newBuilder().setStatus(convertStatus(e)).build()); + responseObserver.onNext(RowResult.newBuilder().setStatus(convertStatus(e)).build()); responseObserver.onCompleted(); return; } catch (StatusRuntimeException e) { @@ -700,8 +694,7 @@ public void executeQuery( responseObserver.onError(e); return; } catch (ApiException e) { - responseObserver.onNext( - ExecuteQueryResult.newBuilder().setStatus(convertStatus(e)).build()); + responseObserver.onNext(ExecuteQueryResult.newBuilder().setStatus(convertStatus(e)).build()); responseObserver.onCompleted(); return; } catch (StatusRuntimeException e) { @@ -803,7 +796,9 @@ private static com.google.rpc.Status convertStatus(ApiException e) { return status; } - return com.google.rpc.Status.newBuilder().setCode(e.getStatusCode().getCode().ordinal()).setMessage(e.getMessage()) + return com.google.rpc.Status.newBuilder() + .setCode(e.getStatusCode().getCode().ordinal()) + .setMessage(e.getMessage()) .build(); }