/** * Handles only single elements from the {@link PersistentEventLogLoader} * in order to keep transactions short and safe. * * @see <a href="https://trac.openmicroscopy.org/ome/ticket/5814">ticket:5814</a> */ public void handleEventLog(EventLog eventLog, Session session, ServiceFactory sf) { final long start = System.currentTimeMillis(); final boolean handled = process(eventLog.getEntityId(), sf, session); final String msg = String.format("EventLog:%s(entityId=%s) [%s ms.]", eventLog.getId(), eventLog.getEntityId(), (System.currentTimeMillis() - start)); if (handled) { log.info("HANDLED "+ msg); } else { log.debug("SKIPPED "+ msg); } }
/** * Removes and returns the next {@link EventLog} instance or null if none is * present. Also cleans up any tracking information for the given * {@link EventLog}. * * @return See above. */ public synchronized EventLog remove() { if (logs.size() == 0) { contained.clear(); return null; // EARLY EXIT } adding = false; EventLog log = logs.remove(0); // None of these can be null as long as the log is still contained Map<String, Set<String>> class2action = contained .get(log.getEntityId()); Set<String> actions = class2action.get(log.getEntityType()); assert actions.remove(log.getAction()); if (actions.size() == 0) { class2action.remove(log.getEntityType()); if (class2action.size() == 0) { contained.remove(log.getEntityId()); } } return log; }
@Override public long more() { long diff = lastEventLog().getEntityId() - getCurrentId(); return diff < 0 ? 0 : diff; }
if (logger.isInfoEnabled()) { logger.info("Backlog locked:" + log.getEntityType() + ":Id_" + log.getEntityId()); || log.getEntityId() == null || log.getAction() == null) { throw new IllegalArgumentException( "EventLog must contain entityType, entityId, and action"); .get(log.getEntityId()); contained.put(log.getEntityId(), class2action); if (logger.isInfoEnabled()) { logger.info("Already in backlog:" + log.getEntityType() + ":Id_" + log.getEntityId()); if (logger.isInfoEnabled()) { logger.info("Added to backlog:" + log.getEntityType() + ":Id_" + log.getEntityId());
@Override public Object retrieve(String field) { if (field == null) { return null; } else if (field.equals(ID)) { return getId(); } else if (field.equals(ENTITYID)) { return getEntityId(); } else if (field.equals(ENTITYTYPE)) { return getEntityType(); } else if (field.equals(ACTION)) { return getAction(); } else if (field.equals(EVENT)) { return getEvent(); } else if (field.equals(DETAILS)) { return getDetails(); } else { if (_dynamicFields != null) { return _dynamicFields.get(field); } return null; } }
sb.append(eventLog.getEntityType()); sb.append(" "); sb.append(eventLog.getEntityId()); sb.append("\b"); .add(new Object[] { id++, -35L, l.getEntityId(), l.getEntityType(), l.getAction(), l.getEvent().getId() });
Class type = asClassOrNull(eventLog.getEntityType()); if (type != null) { long id = eventLog.getEntityId();
p.addId(el.getEntityId()); sb.append(klass); sb.append(":"); sb.append(el.getEntityId()); sb.append(" - "); sb.append(el.getAction());