Skip to content

Commit de1669e

Browse files
PeteyPiiPatrick Wrobeligorbernstein2
authored
fix: use StatusProto.fromThrowable for ApiException in test-proxy (#2778)
* fix: use StatusProto.fromThrowable for ApiException in test-proxy This should fix the test proxy from prefixing error messages with "io.grpc.StatusRuntimeException: " * Use convertStatus to handle internal errors as well * Clean up newline --------- Co-authored-by: Patrick Wrobel <pwrobel@google.com> Co-authored-by: Igor Bernstein <igorbernstein@google.com>
1 parent 92d50ea commit de1669e

1 file changed

Lines changed: 20 additions & 58 deletions

File tree

test-proxy/src/main/java/com/google/cloud/bigtable/testproxy/CbtTestProxy.java

Lines changed: 20 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -284,21 +284,13 @@ public void mutateRow(
284284
return;
285285
}
286286

287-
// TODO(developer): evaluate if we want to manually unpack the proto into a model, instead of
288-
// using fromProto. Same for the other methods.
289287
RowMutation mutation = RowMutation.fromProto(request.getRequest());
290288
try {
291289
// This response is empty.
292290
client.dataClient().mutateRow(mutation);
293291
} catch (ApiException e) {
294292
responseObserver.onNext(
295-
MutateRowResult.newBuilder()
296-
.setStatus(
297-
com.google.rpc.Status.newBuilder()
298-
.setCode(e.getStatusCode().getCode().ordinal())
299-
.setMessage(e.getMessage())
300-
.build())
301-
.build());
293+
MutateRowResult.newBuilder().setStatus(convertStatus(e)).build());
302294
responseObserver.onCompleted();
303295
return;
304296
} catch (StatusRuntimeException e) {
@@ -351,13 +343,7 @@ public void bulkMutateRows(
351343
return;
352344
} catch (ApiException e) {
353345
responseObserver.onNext(
354-
MutateRowsResult.newBuilder()
355-
.setStatus(
356-
com.google.rpc.Status.newBuilder()
357-
.setCode(e.getStatusCode().getCode().ordinal())
358-
.setMessage(e.getMessage())
359-
.build())
360-
.build());
346+
MutateRowsResult.newBuilder().setStatus(convertStatus(e)).build());
361347
responseObserver.onCompleted();
362348
return;
363349
} catch (StatusRuntimeException e) {
@@ -410,13 +396,7 @@ public void readRow(ReadRowRequest request, StreamObserver<RowResult> responseOb
410396
}
411397
} catch (ApiException e) {
412398
responseObserver.onNext(
413-
RowResult.newBuilder()
414-
.setStatus(
415-
com.google.rpc.Status.newBuilder()
416-
.setCode(e.getStatusCode().getCode().ordinal())
417-
.setMessage(e.getMessage())
418-
.build())
419-
.build());
399+
RowResult.newBuilder().setStatus(convertStatus(e)).build());
420400
responseObserver.onCompleted();
421401
return;
422402
} catch (StatusRuntimeException e) {
@@ -461,13 +441,7 @@ public void readRows(ReadRowsRequest request, StreamObserver<RowsResult> respons
461441
resultBuilder.setStatus(com.google.rpc.Status.getDefaultInstance()).build());
462442
} catch (ApiException e) {
463443
responseObserver.onNext(
464-
RowsResult.newBuilder()
465-
.setStatus(
466-
com.google.rpc.Status.newBuilder()
467-
.setCode(e.getStatusCode().getCode().ordinal())
468-
.setMessage(e.getMessage())
469-
.build())
470-
.build());
444+
RowsResult.newBuilder().setStatus(convertStatus(e)).build());
471445
responseObserver.onCompleted();
472446
return;
473447
} catch (StatusRuntimeException e) {
@@ -585,13 +559,7 @@ public void sampleRowKeys(
585559
keyOffsets = client.dataClient().sampleRowKeys(tableId);
586560
} catch (ApiException e) {
587561
responseObserver.onNext(
588-
SampleRowKeysResult.newBuilder()
589-
.setStatus(
590-
com.google.rpc.Status.newBuilder()
591-
.setCode(e.getStatusCode().getCode().ordinal())
592-
.setMessage(e.getMessage())
593-
.build())
594-
.build());
562+
SampleRowKeysResult.newBuilder().setStatus(convertStatus(e)).build());
595563
responseObserver.onCompleted();
596564
return;
597565
} catch (StatusRuntimeException e) {
@@ -631,13 +599,7 @@ public void checkAndMutateRow(
631599
matched = client.dataClient().checkAndMutateRow(mutation);
632600
} catch (ApiException e) {
633601
responseObserver.onNext(
634-
CheckAndMutateRowResult.newBuilder()
635-
.setStatus(
636-
com.google.rpc.Status.newBuilder()
637-
.setCode(e.getStatusCode().getCode().ordinal())
638-
.setMessage(e.getMessage())
639-
.build())
640-
.build());
602+
CheckAndMutateRowResult.newBuilder().setStatus(convertStatus(e)).build());
641603
responseObserver.onCompleted();
642604
return;
643605
} catch (StatusRuntimeException e) {
@@ -682,13 +644,7 @@ public void readModifyWriteRow(
682644
}
683645
} catch (ApiException e) {
684646
responseObserver.onNext(
685-
RowResult.newBuilder()
686-
.setStatus(
687-
com.google.rpc.Status.newBuilder()
688-
.setCode(e.getStatusCode().getCode().ordinal())
689-
.setMessage(e.getMessage())
690-
.build())
691-
.build());
647+
RowResult.newBuilder().setStatus(convertStatus(e)).build());
692648
responseObserver.onCompleted();
693649
return;
694650
} catch (StatusRuntimeException e) {
@@ -745,13 +701,7 @@ public void executeQuery(
745701
return;
746702
} catch (ApiException e) {
747703
responseObserver.onNext(
748-
ExecuteQueryResult.newBuilder()
749-
.setStatus(
750-
com.google.rpc.Status.newBuilder()
751-
.setCode(e.getStatusCode().getCode().ordinal())
752-
.setMessage(e.getMessage())
753-
.build())
754-
.build());
704+
ExecuteQueryResult.newBuilder().setStatus(convertStatus(e)).build());
755705
responseObserver.onCompleted();
756706
return;
757707
} catch (StatusRuntimeException e) {
@@ -845,6 +795,18 @@ public ManagedChannelBuilder apply(ManagedChannelBuilder input) {
845795
.build();
846796
}
847797

798+
// Cleanly forwards server errors through the test proxy. Internal client errors
799+
// are wrapped in an UNKNOWN status.
800+
private static com.google.rpc.Status convertStatus(ApiException e) {
801+
com.google.rpc.Status status = StatusProto.fromThrowable(e);
802+
if (status != null) {
803+
return status;
804+
}
805+
806+
return com.google.rpc.Status.newBuilder().setCode(e.getStatusCode().getCode().ordinal()).setMessage(e.getMessage())
807+
.build();
808+
}
809+
848810
private CredentialsProvider getCredentialsProvider(String accessToken) {
849811
if (accessToken.isEmpty()) {
850812
return NoCredentialsProvider.create();

0 commit comments

Comments
 (0)