@Override public Node addManager(String managerUuid, String proxyString) { return write.get(0).addManager(managerUuid, proxyString); }
@Override public int closeSessionsForManager(String managerUuid) { int rv = 0; for (final P provider : write) { rv += provider.closeSessionsForManager(managerUuid); } return rv; }
public Set<String> getManagerList(final boolean onlyActive) { return nodeProvider.getManagerList(onlyActive); }
protected void purgeNode(String manager) { log.info("Purging node: " + manager); try { Ice.Identity id = this.communicator.stringToIdentity("ClusterNode/" + manager); registry.removeObjectSafely(id); final int count = nodeProvider.closeSessionsForManager(manager); log.info("Removed " + count + " entries with value " + manager); nodeProvider.setManagerDown(manager); log.info("Removed manager: " + manager); redirector.handleRingShutdown(this, manager); log.info("handleRingShutdown: " + manager); } catch (Exception e) { log.error("Failed to purge node " + manager, e); } } }
@Override public void setManagerDown(String managerUuid) { for (final P provider : write) { provider.setManagerDown(managerUuid); } }
@Override public long getManagerIdByUuid(String managerUuid, SqlAction sql) { for (final P provider : read) { final long managerId = provider.getManagerIdByUuid(managerUuid, sql); if (managerId != 0) { return managerId; } } return 0; }
@Override public Node getManagerByUuid(String managerUuid, ServiceFactory sf) { for (final P provider : read) { final Node manager = provider.getManagerByUuid(managerUuid, sf); if (manager != null) { return manager; } } return null; }
@Override public Principal principal() { return write.get(0).principal(); } }
@Transactional(readOnly = true) public Object doWork(SqlAction sql) { final Long nodeId = nodeProvider.getManagerIdByUuid(uuid, sql); return nodeId == null ? null : new Node(nodeId, false); } });
@Override public Session executeUpdate(ServiceFactory sf, Session session, String uuid, long userId, Long sudoerId) { Node node = nodeProvider.getManagerByUuid(uuid, sf); if (node == null) { node = new Node(0L, false); // Using default node. } if (session.getId() == null) { session.setId(executeNextSessionId()); } session.setNode(node); session.setOwner(new Experimenter(userId, false)); if (sudoerId == null) { session.setSudoer(null); } else { session.setSudoer(new Experimenter(sudoerId, false)); } /* put before remove so that the session is never missing altogether */ if (session.getClosed() == null) { openSessions.put(session.getUuid(), session); closedSessions.remove(session.getUuid()); } else { closedSessions.put(session.getUuid(), session); openSessions.remove(session.getUuid()); } log.debug("Registered Session:{} ({})", session.getId(), session.getUuid()); return session; }
.stringToIdentity("ClusterNode/" + uuid); this.adapter.add(this, clusterNode); // OK ADAPTER USAGE nodeProvider.addManager(uuid, directProxy); registry.addObject(this.adapter.createDirectProxy(clusterNode)); nodeUuids.add(uuid);
@Override public Set<String> getManagerList(boolean onlyActive) { final Set<String> rvs = new HashSet<>(); for (final P provider : read) { final Set<String> rv = provider.getManagerList(onlyActive); if (rv != null) { rvs.addAll(rv); } } return rvs; }
registry.removeObjectSafely(id); redirector.handleRingShutdown(this, this.uuid); final int count = nodeProvider.closeSessionsForManager(uuid); log.info("Removed " + count + " entries for " + uuid); log.info("Disconnected from OMERO.cluster");
final long nodeId = nodeProvider.getManagerIdByUuid(uuid, sql);
@Override public Session executeUpdate(ServiceFactory sf, Session session, String uuid, long userId, Long sudoerId) { Node node = nodeProvider.getManagerByUuid(uuid, sf); if (node == null) { node = new Node(0L, false); // Using default node. } session.setNode(node); session.setOwner(new Experimenter(userId, false)); if (sudoerId == null) { session.setSudoer(null); } else { session.setSudoer(new Experimenter(sudoerId, false)); } Session rv = sf.getUpdateService().saveAndReturnObject(session); rv.putAt("#2733", session.retrieve("#2733")); return rv; }