diff --git a/proxyserver/src/main/java/edu/suffolk/litlab/efsp/server/logging/Monitor.java b/proxyserver/src/main/java/edu/suffolk/litlab/efsp/server/logging/Monitor.java deleted file mode 100644 index 4d1ef3a1..00000000 --- a/proxyserver/src/main/java/edu/suffolk/litlab/efsp/server/logging/Monitor.java +++ /dev/null @@ -1,89 +0,0 @@ -package edu.suffolk.litlab.efsp.server.logging; - -import edu.suffolk.litlab.efsp.server.utils.SendMessage; -import edu.suffolk.litlab.efsp.stdlib.StdLib; -import java.io.IOException; -import java.time.LocalTime; -import java.util.Map; -import java.util.concurrent.atomic.AtomicInteger; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class Monitor { - private static Logger log = LoggerFactory.getLogger(Monitor.class); - - private static final String monitoringEmail = StdLib.GetEnv("MONITORING_EMAIL").orElse(""); - public static final String EXTERNAL_DOMAIN = - StdLib.GetEnv("EXTERNAL_DOMAIN").orElse("filingassemblymde.com"); - - private static LocalTime lastSent = null; - private static AtomicInteger prevErrors = new AtomicInteger(0); - - /** - * Sends error notifications, without overwhelming the monitoring channel. Can be called whenever, - * and will only send a notification once every 2 minutes. - * - *

This works because most of the error info is still in the logs. - */ - public static void sendErrorNotification(String errorStr) { - LocalTime now = LocalTime.now(); - if (lastSent == null || (lastSent != null && now.isAfter(lastSent.plusMinutes(2)))) { - String smallErrStr = (errorStr.length() > 21) ? errorStr.substring(0, 20) : errorStr; - StringBuilder fullEmailMsg = new StringBuilder(); - fullEmailMsg - .append("There's been an error in the EfileProxyServer at ") - .append(EXTERNAL_DOMAIN) - .append(", at ") - .append(now.toString()) - .append(". The error was: \n") - .append(errorStr) - .append(". "); - if (lastSent != null && prevErrors.get() > 0) { - fullEmailMsg - .append("There were ") - .append(prevErrors.get()) - .append(" previous error(s) between ") - .append(lastSent.toString()) - .append(" and now. Check the logs for more information."); - } - sendImmediateErrorNotification( - "Error in EfileProxy: " + smallErrStr, fullEmailMsg.toString(), Map.of()); - lastSent = now; - prevErrors.set(0); - } else { - prevErrors.incrementAndGet(); - } - } - - /** - * Sends an error notification immediately. Should only call for scheduled processes, and not - * anything that can be triggered by an API user. - * - *

The server needs to be able to send email messages for monitoring to work. - * - * @see edu.suffolk.litlab.efsp.server.utils.SendMessage - * @param subject The subject of the notification (email subject for now) - * @param template The body of the notification, as a jinja template - * @param context the mapping of jinja variables in `template` to the strings they should become. - */ - public static void sendImmediateErrorNotification( - String subject, String template, Map context) { - if (monitoringEmail != null && !monitoringEmail.isBlank()) { - SendMessage.create() - .ifPresentOrElse( - sender -> { - try { - sender.sendEmail( - "massaccess@suffolk.edu", subject, monitoringEmail, template, context); - } catch (IOException ex) { - log.error( - "Failed to notify that an updated failed, hope someone checks the logs\n\n", - ex); - } - }, - () -> { - log.warn("not monitoring error logs"); - }); - } - } -} diff --git a/proxyserver/src/main/java/edu/suffolk/litlab/efsp/server/logging/ServerSpecificAppender.java b/proxyserver/src/main/java/edu/suffolk/litlab/efsp/server/logging/ServerSpecificAppender.java index bb651c7a..1314a42e 100644 --- a/proxyserver/src/main/java/edu/suffolk/litlab/efsp/server/logging/ServerSpecificAppender.java +++ b/proxyserver/src/main/java/edu/suffolk/litlab/efsp/server/logging/ServerSpecificAppender.java @@ -1,6 +1,5 @@ package edu.suffolk.litlab.efsp.server.logging; -import ch.qos.logback.classic.Level; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.AppenderBase; import ch.qos.logback.core.encoder.Encoder; @@ -57,9 +56,6 @@ public void append(ILoggingEvent event) { } finally { lock.unlock(); } - if (event.getLevel().equals(Level.ERROR)) { - Monitor.sendErrorNotification(event.getFormattedMessage()); - } } public Encoder getEncoder() { diff --git a/proxyserver/src/main/java/edu/suffolk/litlab/efsp/server/utils/UpdateCodeVersions.java b/proxyserver/src/main/java/edu/suffolk/litlab/efsp/server/utils/UpdateCodeVersions.java index 56a73ff7..65d6ea77 100644 --- a/proxyserver/src/main/java/edu/suffolk/litlab/efsp/server/utils/UpdateCodeVersions.java +++ b/proxyserver/src/main/java/edu/suffolk/litlab/efsp/server/utils/UpdateCodeVersions.java @@ -3,15 +3,11 @@ import edu.suffolk.litlab.efsp.Jurisdiction; import edu.suffolk.litlab.efsp.db.DatabaseCreator; import edu.suffolk.litlab.efsp.server.logging.MDCWrappers; -import edu.suffolk.litlab.efsp.server.logging.Monitor; -import edu.suffolk.litlab.efsp.tyler.TylerClients; import edu.suffolk.litlab.efsp.tyler.ecfcodes.CodeDatabase; import edu.suffolk.litlab.efsp.tyler.ecfcodes.CodeUpdater; import java.sql.Connection; import java.sql.SQLException; -import java.time.LocalDate; import java.util.List; -import java.util.Map; import org.quartz.Job; import org.quartz.JobDataMap; import org.quartz.JobExecutionContext; @@ -23,17 +19,6 @@ public class UpdateCodeVersions implements Job { private static Logger log = LoggerFactory.getLogger(UpdateCodeVersions.class); - private static final String badUpdateEmailTemplate = - """ - Something's wrong with the EfileProxy. On the {{external_server}} server, `UpdateCodeVersions` - has failed to refresh the downloaded genericodes for the jurisdiction {{jurisdiction}} (env: {{env}}). - Unfortunately We can't send the potential problems in this message yet, but check the logs around - {{error_timestamp}}. - - Good luck, lol. - - The EfileProxyServer - """; - /** * A very light wrapper around the CLI CodeUpdater tool. A separate Job is started for each * jurisdiction, so only jurisdiction and Tyler env is passed through. @@ -62,18 +47,7 @@ public void execute(JobExecutionContext context) throws JobExecutionException { } log.info("Finished code updates with status: {}", success); if (!success) { - Monitor.sendImmediateErrorNotification( - "UpdateCodeVersions error on " + Monitor.EXTERNAL_DOMAIN, - badUpdateEmailTemplate, - Map.of( - "external_server", - ServiceHelpers.EXTERNAL_URL, - "jurisdiction", - jurisdiction, - "env", - TylerClients.getTylerEnv(), - "error_timestamp", - LocalDate.now().toString())); + log.error("UpdateCodeVersions error, failed to refresh the downloaded genericodes"); } MDCWrappers.removeAllMDCs(); }