public void start() { syncer.start(); }
void stop() { syncer.stop(); }
public void waitForInitialization() throws InterruptedException { if (!syncer.awaitInitialization(3 * syncer.getServerHttpTimeout(), TimeUnit.MILLISECONDS)) { throw new RE("Failed to sync with worker[%s].", worker.getHost()); } }
EasyMock.replay(listener); ChangeRequestHttpSyncer<String> syncer = new ChangeRequestHttpSyncer<>( jsonMapper, httpClient, ); syncer.start(); syncer.stop();
for (Map.Entry<String, WorkerHolder> e : workers.entrySet()) { WorkerHolder workerHolder = e.getValue(); if (!workerHolder.getUnderlyingSyncer().isOK()) { synchronized (workers) { "Worker[%s] is not syncing properly. Current state is [%s]. Resetting it.", workerHolder.getWorker().getHost(), workerHolder.getUnderlyingSyncer().getDebugInfo() ).emit(); removeWorker(workerHolder.getWorker());
public WorkerHolder( ObjectMapper smileMapper, HttpClient httpClient, HttpRemoteTaskRunnerConfig config, ScheduledExecutorService workersSyncExec, Listener listener, Worker worker ) { this.smileMapper = smileMapper; this.httpClient = httpClient; this.config = config; this.listener = listener; this.worker = worker; //worker holder is created disabled and gets enabled after first sync success. this.disabled = new AtomicBoolean(true); this.syncer = new ChangeRequestHttpSyncer<>( smileMapper, httpClient, workersSyncExec, TaskRunnerUtils.makeWorkerURL(worker, "/"), "/druid-internal/v1/worker", WORKER_SYNC_RESP_TYPE_REF, config.getSyncRequestTimeout().toStandardDuration().getMillis(), config.getServerUnstabilityTimeout().toStandardDuration().getMillis(), createSyncListener() ); }
final String req = getRequestString(); ); if (incrementFailedAttemptAndCheckUnstabilityTimeout()) { log.makeAlert(th, logMsg).emit(); } else { addNextSyncToWorkQueue();
/** * This method returns the debugging information exposed by {@link HttpServerInventoryViewResource} and meant * for that use only. It must not be used for any other purpose. */ public Map<String, Object> getDebugInfo() { Preconditions.checkArgument(lifecycleLock.awaitStarted(1, TimeUnit.MILLISECONDS)); Map<String, Object> result = new HashMap<>(servers.size()); for (Map.Entry<String, DruidServerHolder> e : servers.entrySet()) { DruidServerHolder serverHolder = e.getValue(); result.put( e.getKey(), serverHolder.syncer.getDebugInfo() ); } return result; }
boolean isSyncedSuccessfullyAtleastOnce() { try { return syncer.awaitInitialization(1, TimeUnit.MILLISECONDS); } catch (InterruptedException ex) { throw new RE( ex, "Interrupted while waiting for queryable server[%s] initial successful sync.", druidServer.getName() ); } }
); if (incrementFailedAttemptAndCheckUnstabilityTimeout()) { log.makeAlert(th, logMsg).emit(); } else { addNextSyncToWorkQueue();
public void start() { synchronized (startStopLock) { if (!startStopLock.canStart()) { throw new ISE("Can't start ChangeRequestHttpSyncer[%s].", logIdentity); } log.info("Starting ChangeRequestHttpSyncer[%s].", logIdentity); startStopLock.started(); startStopLock.exitStart(); addNextSyncToWorkQueue(); } }
for (Map.Entry<String, DruidServerHolder> e : servers.entrySet()) { DruidServerHolder serverHolder = e.getValue(); if (!serverHolder.syncer.isOK()) { synchronized (servers) { "Server[%s] is not syncing properly. Current state is [%s]. Resetting it.", serverHolder.druidServer.getName(), serverHolder.syncer.getDebugInfo() ).emit(); serverRemoved(serverHolder.druidServer);
DruidServerHolder(DruidServer druidServer) { this.druidServer = druidServer; try { HostAndPort hostAndPort = HostAndPort.fromString(druidServer.getHost()); this.syncer = new ChangeRequestHttpSyncer<>( smileMapper, httpClient, executor, new URL(druidServer.getScheme(), hostAndPort.getHostText(), hostAndPort.getPort(), "/"), "/druid-internal/v1/segments", SEGMENT_LIST_RESP_TYPE_REF, config.getServerTimeout(), config.getServerUnstabilityTimeout(), createSyncListener() ); } catch (MalformedURLException ex) { throw new IAE(ex, "Failed to construct server URL."); } }
/** * This method returns the debugging information exposed by {@link HttpRemoteTaskRunnerResource} and meant * for that use only. It must not be used for any other purpose. */ public Map<String, Object> getDebugInfo() { Preconditions.checkArgument(lifecycleLock.awaitStarted(1, TimeUnit.MILLISECONDS)); Map<String, Object> result = new HashMap<>(workers.size()); for (Map.Entry<String, WorkerHolder> e : workers.entrySet()) { WorkerHolder serverHolder = e.getValue(); result.put( e.getKey(), serverHolder.getUnderlyingSyncer().getDebugInfo() ); } return result; }
boolean isSyncedSuccessfullyAtleastOnce() { try { return syncer.awaitInitialization(1); } catch (InterruptedException ex) { throw new RE( ex, "Interrupted while waiting for queryable server[%s] initial successful sync.", druidServer.getName() ); } }
public void start() { synchronized (startStopLock) { if (!startStopLock.canStart()) { throw new ISE("Can't start ChangeRequestHttpSyncer[%s].", logIdentity); } log.info("Starting ChangeRequestHttpSyncer[%s].", logIdentity); startStopLock.started(); startStopLock.exitStart(); addNextSyncToWorkQueue(); } }
for (Map.Entry<String, WorkerHolder> e : workers.entrySet()) { WorkerHolder workerHolder = e.getValue(); if (!workerHolder.getUnderlyingSyncer().isOK()) { synchronized (workers) { "Worker[%s] is not syncing properly. Current state is [%s]. Resetting it.", workerHolder.getWorker().getHost(), workerHolder.getUnderlyingSyncer().getDebugInfo() ).emit(); removeWorker(workerHolder.getWorker());
void start() { syncer.start(); }
public void stop() { syncer.stop(); }
public WorkerHolder( ObjectMapper smileMapper, HttpClient httpClient, HttpRemoteTaskRunnerConfig config, ScheduledExecutorService workersSyncExec, Listener listener, Worker worker ) { this.smileMapper = smileMapper; this.httpClient = httpClient; this.config = config; this.listener = listener; this.worker = worker; //worker holder is created disabled and gets enabled after first sync success. this.disabled = new AtomicBoolean(true); this.syncer = new ChangeRequestHttpSyncer<>( smileMapper, httpClient, workersSyncExec, TaskRunnerUtils.makeWorkerURL(worker, "/"), "/druid-internal/v1/worker", WORKER_SYNC_RESP_TYPE_REF, config.getSyncRequestTimeout().toStandardDuration().getMillis(), config.getServerUnstabilityTimeout().toStandardDuration().getMillis(), createSyncListener() ); }