From 1ae676d3ad26cc216024dffaa1297898cc7706d7 Mon Sep 17 00:00:00 2001 From: Weimin Yu Date: Thu, 3 Mar 2022 16:10:31 -0500 Subject: [PATCH] Pass stack trace to validate_datastore user (#1537) * Pass stack trace to validate_datastore user --- .../SyncDatastoreToSqlSnapshotAction.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/google/registry/backup/SyncDatastoreToSqlSnapshotAction.java b/core/src/main/java/google/registry/backup/SyncDatastoreToSqlSnapshotAction.java index 17c647826..b509faa39 100644 --- a/core/src/main/java/google/registry/backup/SyncDatastoreToSqlSnapshotAction.java +++ b/core/src/main/java/google/registry/backup/SyncDatastoreToSqlSnapshotAction.java @@ -29,6 +29,8 @@ import google.registry.request.Parameter; import google.registry.request.Response; import google.registry.request.auth.Auth; import google.registry.util.Sleeper; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; import java.util.Optional; import javax.inject.Inject; import org.joda.time.DateTime; @@ -114,9 +116,22 @@ public class SyncDatastoreToSqlSnapshotAction implements Runnable { response.setPayload( String.format(SUCCESS_RESPONSE_TEMPLATE, sqlSnapshotId, checkpoint.getCheckpointTime())); return; - } catch (Exception e) { + } catch (Throwable e) { + logger.atSevere().withCause(e).log("Failed to sync Datastore to SQL."); response.setStatus(SC_INTERNAL_SERVER_ERROR); - response.setPayload(e.getMessage()); + response.setPayload(getStackTrace(e)); + } + } + + private static String getStackTrace(Throwable e) { + try { + ByteArrayOutputStream bis = new ByteArrayOutputStream(); + PrintStream printStream = new PrintStream(bis); + e.printStackTrace(printStream); + printStream.close(); + return bis.toString(); + } catch (RuntimeException re) { + return re.getMessage(); } }