@Override public void reportStorageEvents(Collection<StatsStorageEvent> events) { boolean attachedArbiter = false; for (StatsStorageEvent sse : events) { if (ARBITER_UI_TYPE_ID.equals(sse.getTypeID())) { if (sse.getEventType() == StatsStorageListener.EventType.PostStaticInfo) { knownSessionIDs.put(sse.getSessionID(), sse.getStatsStorage()); } Long lastUpdate = lastUpdateForSession.get(sse.getSessionID()); if (lastUpdate == null) { lastUpdateForSession.put(sse.getSessionID(), sse.getTimestamp()); } else if (sse.getTimestamp() > lastUpdate) { lastUpdateForSession.put(sse.getSessionID(), sse.getTimestamp()); //Should be thread safe - read only elsewhere } attachedArbiter = true; } } if(currentSessionID == null){ getDefaultSession(); } if(attachedArbiter && !loggedArbiterAddress.getAndSet(true)){ String address = UIServer.getInstance().getAddress(); address += "/arbiter"; log.info("DL4J Arbiter Hyperparameter Optimization UI: {}", address); } }