From f20a66f841d260ffca0c77b6701e1326cce1e70e Mon Sep 17 00:00:00 2001 From: Mo Date: Sat, 10 Oct 2015 22:22:24 +0300 Subject: [PATCH] stop EDCE after 5 errors --- client/src/main/java/ru/trader/EDCE.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/client/src/main/java/ru/trader/EDCE.java b/client/src/main/java/ru/trader/EDCE.java index 617e46b..0211996 100644 --- a/client/src/main/java/ru/trader/EDCE.java +++ b/client/src/main/java/ru/trader/EDCE.java @@ -28,6 +28,7 @@ public class EDCE { private static ScheduledExecutorService executor; private static ScheduledFuture checker; + private final static int MAX_ERRORS = 5; private final static int CACHE_LIMIT = 8; private List cache = new LinkedList<>(); @@ -35,6 +36,7 @@ public class EDCE { private final MarketModel world; private final StationUpdater updater; private final EDSession session; + private int errors; private long interval; private boolean forceUpdate; @@ -200,7 +202,7 @@ public class EDCE { LOG.trace("EDCE check, waiting {}", waiting); try { if (waiting) return; - if (session.getLastStatus() == ED_SESSION_STATUS.OK) { + if (session.getLastStatus() == ED_SESSION_STATUS.OK || session.getLastStatus() == ED_SESSION_STATUS.ERROR) { LOG.trace("Read profile from ED"); session.readProfile(EDCE.this::parseAndCheck); } @@ -242,6 +244,15 @@ public class EDCE { waiting = false; }); } + if (session.getLastStatus() == ED_SESSION_STATUS.ERROR) { + errors++; + LOG.debug("Error on read response, errors count {}", errors); + if (errors >= MAX_ERRORS) { + stop(); + } + } else { + errors = 0; + } } catch (Exception ex){ LOG.error("",ex); }