Skip to content

Commit 254b2f5

Browse files
authored
chore: append gRPC error message for debugging (#3345)
* chore: append gRPC error message for debugging * fix: lint
1 parent 216e18e commit 254b2f5

File tree

1 file changed

+25
-16
lines changed
  • google-cloud-spanner-executor/src/main/java/com/google/cloud/executor/spanner

1 file changed

+25
-16
lines changed

google-cloud-spanner-executor/src/main/java/com/google/cloud/executor/spanner/CloudExecutor.java

+25-16
Original file line numberDiff line numberDiff line change
@@ -416,39 +416,48 @@ public Status sendOutcome(SpannerActionOutcome outcome) {
416416

417417
/** Map Cloud ErrorCode to Status. */
418418
protected Status toStatus(SpannerException e) {
419+
String errorMessage = e.getMessage();
420+
com.google.rpc.Status rpcStatus = io.grpc.protobuf.StatusProto.fromThrowable(e);
421+
if (rpcStatus != null) {
422+
if (rpcStatus.getDetailsCount() > 0) {
423+
errorMessage += "/n";
424+
}
425+
for (int i = 0; i < rpcStatus.getDetailsCount(); i++) {
426+
errorMessage += "\nError detail: " + rpcStatus.getDetails(i).toString();
427+
}
428+
}
419429
switch (e.getErrorCode()) {
420430
case INVALID_ARGUMENT:
421-
return Status.fromCode(Status.INVALID_ARGUMENT.getCode()).withDescription(e.getMessage());
431+
return Status.fromCode(Status.INVALID_ARGUMENT.getCode()).withDescription(errorMessage);
422432
case PERMISSION_DENIED:
423-
return Status.fromCode(Status.PERMISSION_DENIED.getCode()).withDescription(e.getMessage());
433+
return Status.fromCode(Status.PERMISSION_DENIED.getCode()).withDescription(errorMessage);
424434
case ABORTED:
425-
return Status.fromCode(Status.ABORTED.getCode()).withDescription(e.getMessage());
435+
return Status.fromCode(Status.ABORTED.getCode()).withDescription(errorMessage);
426436
case ALREADY_EXISTS:
427-
return Status.fromCode(Status.ALREADY_EXISTS.getCode()).withDescription(e.getMessage());
437+
return Status.fromCode(Status.ALREADY_EXISTS.getCode()).withDescription(errorMessage);
428438
case CANCELLED:
429-
return Status.fromCode(Status.CANCELLED.getCode()).withDescription(e.getMessage());
439+
return Status.fromCode(Status.CANCELLED.getCode()).withDescription(errorMessage);
430440
case INTERNAL:
431441
return Status.fromCode(Status.INTERNAL.getCode())
432-
.withDescription(e.getMessage() + e.getReason() == null ? "" : ": " + e.getReason());
442+
.withDescription(errorMessage + e.getReason() == null ? "" : ": " + e.getReason());
433443
case FAILED_PRECONDITION:
434-
return Status.fromCode(Status.FAILED_PRECONDITION.getCode())
435-
.withDescription(e.getMessage());
444+
return Status.fromCode(Status.FAILED_PRECONDITION.getCode()).withDescription(errorMessage);
436445
case NOT_FOUND:
437-
return Status.fromCode(Status.NOT_FOUND.getCode()).withDescription(e.getMessage());
446+
return Status.fromCode(Status.NOT_FOUND.getCode()).withDescription(errorMessage);
438447
case DEADLINE_EXCEEDED:
439-
return Status.fromCode(Status.DEADLINE_EXCEEDED.getCode()).withDescription(e.getMessage());
448+
return Status.fromCode(Status.DEADLINE_EXCEEDED.getCode()).withDescription(errorMessage);
440449
case RESOURCE_EXHAUSTED:
441-
return Status.fromCode(Status.RESOURCE_EXHAUSTED.getCode()).withDescription(e.getMessage());
450+
return Status.fromCode(Status.RESOURCE_EXHAUSTED.getCode()).withDescription(errorMessage);
442451
case OUT_OF_RANGE:
443-
return Status.fromCode(Status.OUT_OF_RANGE.getCode()).withDescription(e.getMessage());
452+
return Status.fromCode(Status.OUT_OF_RANGE.getCode()).withDescription(errorMessage);
444453
case UNAUTHENTICATED:
445-
return Status.fromCode(Status.UNAUTHENTICATED.getCode()).withDescription(e.getMessage());
454+
return Status.fromCode(Status.UNAUTHENTICATED.getCode()).withDescription(errorMessage);
446455
case UNIMPLEMENTED:
447-
return Status.fromCode(Status.UNIMPLEMENTED.getCode()).withDescription(e.getMessage());
456+
return Status.fromCode(Status.UNIMPLEMENTED.getCode()).withDescription(errorMessage);
448457
case UNAVAILABLE:
449-
return Status.fromCode(Status.UNAVAILABLE.getCode()).withDescription(e.getMessage());
458+
return Status.fromCode(Status.UNAVAILABLE.getCode()).withDescription(errorMessage);
450459
case UNKNOWN:
451-
return Status.fromCode(Status.UNKNOWN.getCode()).withDescription(e.getMessage());
460+
return Status.fromCode(Status.UNKNOWN.getCode()).withDescription(errorMessage);
452461
default:
453462
return Status.fromCode(Status.UNKNOWN.getCode())
454463
.withDescription("Unsupported Spanner error code: " + e.getErrorCode());

0 commit comments

Comments
 (0)