X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Frhynodge%2Fengine%2FReactionRunner.java;h=45642cebc6c696b545540cb271bbded6552feb5b;hb=471004d860e843ca1c1a3dd50f1090569bff86e0;hp=0538a0fb287ed0daeb721df61633da914786e691;hpb=ca8d94517a9edab7bc448201fca26a0489135204;p=rhynodge.git diff --git a/src/main/java/net/pterodactylus/rhynodge/engine/ReactionRunner.java b/src/main/java/net/pterodactylus/rhynodge/engine/ReactionRunner.java index 0538a0f..45642ce 100644 --- a/src/main/java/net/pterodactylus/rhynodge/engine/ReactionRunner.java +++ b/src/main/java/net/pterodactylus/rhynodge/engine/ReactionRunner.java @@ -49,8 +49,11 @@ public class ReactionRunner implements Runnable { state = runStateThroughFilters(state); if (!state.success()) { logger.info(format("Reaction %s failed in %s.", reaction.name(), state)); + Optional lastState = reactionState.loadLastState(); saveStateWithIncreasedFailCount(state); - errorEmailAction.execute(createErrorOutput(reaction, state)); + if (thisFailureIsTheFirstFailure(lastState)) { + errorEmailAction.execute(createErrorOutput(reaction, state)); + } return; } Optional lastSuccessfulState = reactionState.loadLastSuccessfulState(); @@ -69,6 +72,10 @@ public class ReactionRunner implements Runnable { logger.info(format("Reaction %s finished.", reaction.name())); } + private static boolean thisFailureIsTheFirstFailure(Optional lastState) { + return lastState.map(State::success).orElse(true); + } + private void saveStateWithIncreasedFailCount(State state) { Optional lastState = reactionState.loadLastState(); state.setFailCount(lastState.map(State::failCount).orElse(0) + 1);