public void invoke(Request req) { handleRpcList(req); } })
public void invoke(Request req) { handleRpcUnreg(req); } })
/** * The container has no rpc methods, but we still need an RPC sever * to register in Slobrok to enable orchestration */ private Register registerInSlobrok(SlobroksConfig slobrokConfig, QrConfig qrConfig) { if ( ! qrConfig.rpc().enabled()) return null; // 1. Set up RPC server supervisor = new Supervisor(new Transport()); Spec listenSpec = new Spec(qrConfig.rpc().port()); try { acceptor = supervisor.listen(listenSpec); } catch (ListenFailedException e) { throw new RuntimeException("Could not create rpc server listening on " + listenSpec, e); } // 2. Register it in slobrok SlobrokList slobrokList = new SlobrokList(); slobrokList.setup(slobrokConfig.slobrok().stream().map(SlobroksConfig.Slobrok::connectionspec).toArray(String[]::new)); Spec mySpec = new Spec(HostName.getLocalhost(), acceptor.port()); slobrokRegistrator = new Register(supervisor, slobrokList, mySpec); slobrokRegistrator.registerName(qrConfig.rpc().slobrokId()); log.log(LogLevel.INFO, "Registered name '" + qrConfig.rpc().slobrokId() + "' at " + mySpec + " with: " + slobrokList); return slobrokRegistrator; }
private void unregisterInSlobrok() { if (slobrokRegistrator != null) slobrokRegistrator.shutdown(); if (acceptor != null) acceptor.shutdown().join(); if (supervisor != null) supervisor.transport().shutdown().join(); }
@Override public void registerSession(String session) { register.registerName(identity.getServicePrefix() + "/" + session); }
register = new Register(orb, slobrokConfig.getSlobroks(), identity.getHostname(), listener.port()); mirror = new Mirror(orb, slobrokConfig.getSlobroks());
public void run() { handleUpdate(); } });
public void run() { handleShutdown(); } });
@Override public void unregisterSession(String session) { register.unregisterName(identity.getServicePrefix() + "/" + session); }
log.log(Level.INFO, logMessagePrefix() + " failed, will disconnect: " + req.errorMessage() + " (code " + req.errorCode() + ")"); target.close(); target = null; } else { log.log(Level.WARNING, logMessagePrefix() + " failed: " + req.errorMessage()); log.log(logOnSuccess ? Level.INFO : Level.FINE, logMessagePrefix() + " completed successfully"); backOff.reset(); log.log(Level.FINE, logMessagePrefix() + " now"); target.invokeAsync(req, 35.0, reqWait);
/** * Sets the destroyed flag to true. The very first time this method is called, it cleans up all its dependencies. * Even if you retain a reference to this object, all of its content is allowed to be garbage collected. * * @return True if content existed and was destroyed. */ public boolean destroy() { if (!destroyed.getAndSet(true)) { if (slobroksConfig != null) { slobroksConfig.shutdown(); } register.shutdown(); mirror.shutdown(); listener.shutdown().join(); orb.transport().shutdown().join(); targetPool.flushTargets(true); executor.shutdown(); return true; } return false; }
/** * Register a service with the slobrok cluster. * * @param name service name */ public synchronized void registerName(String name) { if (names.indexOf(name) >= 0) { return; } names.add(name); pending.add(name); discard(unreg, name); updateTask.scheduleNow(); }