From 64f59712758941a35b000e81642966dc7e6473ad Mon Sep 17 00:00:00 2001 From: Ben McIlwain Date: Wed, 24 Jan 2024 13:08:33 -0500 Subject: [PATCH] Include a better error message to debug nomulus tool not working (#2275) Failures to initialize the tool transaction manager seem to often be caused by stale local credentials. --- .../google/registry/tools/RegistryCli.java | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/google/registry/tools/RegistryCli.java b/core/src/main/java/google/registry/tools/RegistryCli.java index a5f06d41b..6fe006655 100644 --- a/core/src/main/java/google/registry/tools/RegistryCli.java +++ b/core/src/main/java/google/registry/tools/RegistryCli.java @@ -23,6 +23,7 @@ import com.beust.jcommander.Parameter; import com.beust.jcommander.ParameterException; import com.beust.jcommander.Parameters; import com.beust.jcommander.ParametersDelegate; +import com.google.common.base.Ascii; import com.google.common.base.Throwables; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; @@ -218,12 +219,21 @@ final class RegistryCli implements CommandRunner { // Reset the JPA transaction manager after every command to avoid a situation where a test can // interfere with other tests - JpaTransactionManager cachedJpaTm = tm(); - TransactionManagerFactory.setJpaTm(() -> component.nomulusToolJpaTransactionManager().get()); - TransactionManagerFactory.setReplicaJpaTm( - () -> component.nomulusToolReplicaJpaTransactionManager().get()); - command.run(); - TransactionManagerFactory.setJpaTm(() -> cachedJpaTm); + try { + JpaTransactionManager cachedJpaTm = tm(); + TransactionManagerFactory.setJpaTm(() -> component.nomulusToolJpaTransactionManager().get()); + TransactionManagerFactory.setReplicaJpaTm( + () -> component.nomulusToolReplicaJpaTransactionManager().get()); + command.run(); + TransactionManagerFactory.setJpaTm(() -> cachedJpaTm); + } catch (Exception e) { + String env = Ascii.toLowerCase(environment.name()); + System.err.printf( + "Could not get tool transaction manager; try running nomulus -e %s logout " + + "and then nomulus -e %s login.\n", + env, env); + throw e; + } } void setEnvironment(RegistryToolEnvironment environment) {