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) {