Skip to content

Commit d301dd1

Browse files
authored
chore: append gRPC error message for debugging
1 parent 216e18e commit d301dd1

File tree

1 file changed

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

1 file changed

+25
-15
lines changed

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

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -416,39 +416,49 @@ 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:
434444
return Status.fromCode(Status.FAILED_PRECONDITION.getCode())
435-
.withDescription(e.getMessage());
445+
.withDescription(errorMessage);
436446
case NOT_FOUND:
437-
return Status.fromCode(Status.NOT_FOUND.getCode()).withDescription(e.getMessage());
447+
return Status.fromCode(Status.NOT_FOUND.getCode()).withDescription(errorMessage);
438448
case DEADLINE_EXCEEDED:
439-
return Status.fromCode(Status.DEADLINE_EXCEEDED.getCode()).withDescription(e.getMessage());
449+
return Status.fromCode(Status.DEADLINE_EXCEEDED.getCode()).withDescription(errorMessage);
440450
case RESOURCE_EXHAUSTED:
441-
return Status.fromCode(Status.RESOURCE_EXHAUSTED.getCode()).withDescription(e.getMessage());
451+
return Status.fromCode(Status.RESOURCE_EXHAUSTED.getCode()).withDescription(errorMessage);
442452
case OUT_OF_RANGE:
443-
return Status.fromCode(Status.OUT_OF_RANGE.getCode()).withDescription(e.getMessage());
453+
return Status.fromCode(Status.OUT_OF_RANGE.getCode()).withDescription(errorMessage);
444454
case UNAUTHENTICATED:
445-
return Status.fromCode(Status.UNAUTHENTICATED.getCode()).withDescription(e.getMessage());
455+
return Status.fromCode(Status.UNAUTHENTICATED.getCode()).withDescription(errorMessage);
446456
case UNIMPLEMENTED:
447-
return Status.fromCode(Status.UNIMPLEMENTED.getCode()).withDescription(e.getMessage());
457+
return Status.fromCode(Status.UNIMPLEMENTED.getCode()).withDescription(errorMessage);
448458
case UNAVAILABLE:
449-
return Status.fromCode(Status.UNAVAILABLE.getCode()).withDescription(e.getMessage());
459+
return Status.fromCode(Status.UNAVAILABLE.getCode()).withDescription(errorMessage);
450460
case UNKNOWN:
451-
return Status.fromCode(Status.UNKNOWN.getCode()).withDescription(e.getMessage());
461+
return Status.fromCode(Status.UNKNOWN.getCode()).withDescription(errorMessage);
452462
default:
453463
return Status.fromCode(Status.UNKNOWN.getCode())
454464
.withDescription("Unsupported Spanner error code: " + e.getErrorCode());

0 commit comments

Comments
 (0)