use of org.apache.druid.indexing.worker.Worker in project druid by druid-io.
the class WorkerResource method doDisable.
@POST
@Path("/disable")
@Produces(MediaType.APPLICATION_JSON)
@ResourceFilters(ConfigResourceFilter.class)
public Response doDisable() {
try {
if (curatorCoordinator != null) {
final Worker disabledWorker = new Worker(enabledWorker.getScheme(), enabledWorker.getHost(), enabledWorker.getIp(), enabledWorker.getCapacity(), DISABLED_VERSION, enabledWorker.getCategory());
curatorCoordinator.updateWorkerAnnouncement(disabledWorker);
}
workerTaskManager.workerDisabled();
return Response.ok(ImmutableMap.of(enabledWorker.getHost(), "disabled")).build();
} catch (Exception e) {
return Response.serverError().build();
}
}
use of org.apache.druid.indexing.worker.Worker in project druid by druid-io.
the class RemoteTaskRunnerTest method testStatusListenerEventDataNullShouldNotThrowException.
@Test
public void testStatusListenerEventDataNullShouldNotThrowException() throws Exception {
// Set up mock emitter to verify log alert when exception is thrown inside the status listener
Worker worker = EasyMock.createMock(Worker.class);
EasyMock.expect(worker.getHost()).andReturn("host").atLeastOnce();
EasyMock.replay(worker);
ServiceEmitter emitter = EasyMock.createMock(ServiceEmitter.class);
Capture<EmittingLogger.EmittingAlertBuilder> capturedArgument = Capture.newInstance();
emitter.emit(EasyMock.capture(capturedArgument));
EasyMock.expectLastCall().atLeastOnce();
EmittingLogger.registerEmitter(emitter);
EasyMock.replay(emitter);
PathChildrenCache cache = new PathChildrenCache(cf, "/test", true);
testStartWithNoWorker();
cache.getListenable().addListener(remoteTaskRunner.getStatusListener(worker, new ZkWorker(worker, cache, jsonMapper), null));
cache.start(PathChildrenCache.StartMode.POST_INITIALIZED_EVENT);
// Status listener will recieve event with null data
Assert.assertTrue(TestUtils.conditionValid(() -> cache.getCurrentData().size() == 1));
// Verify that the log emitter was called
EasyMock.verify(worker);
EasyMock.verify(emitter);
Map<String, Object> alertDataMap = capturedArgument.getValue().build(null).getDataMap();
Assert.assertTrue(alertDataMap.containsKey("znode"));
Assert.assertNull(alertDataMap.get("znode"));
// Status listener should successfully completes without throwing exception
}
use of org.apache.druid.indexing.worker.Worker in project druid by druid-io.
the class RemoteTaskRunnerTestUtils method makeWorker.
Worker makeWorker(final String workerId, final int capacity) throws Exception {
Worker worker = new Worker("http", workerId, workerId, capacity, "0", WorkerConfig.DEFAULT_CATEGORY);
cf.create().creatingParentsIfNeeded().withMode(CreateMode.EPHEMERAL).forPath(JOINER.join(ANNOUNCEMENTS_PATH, workerId), jsonMapper.writeValueAsBytes(worker));
cf.create().creatingParentsIfNeeded().forPath(JOINER.join(TASKS_PATH, workerId));
return worker;
}
use of org.apache.druid.indexing.worker.Worker in project druid by druid-io.
the class ImmutableWorkerInfoTest method testSerde.
@Test
public void testSerde() throws Exception {
ImmutableWorkerInfo workerInfo = new ImmutableWorkerInfo(new Worker("http", "testWorker", "192.0.0.1", 10, "v1", WorkerConfig.DEFAULT_CATEGORY), 2, ImmutableSet.of("grp1", "grp2"), ImmutableSet.of("task1", "task2"), DateTimes.of("2015-01-01T01:01:01Z"));
ObjectMapper mapper = new DefaultObjectMapper();
final ImmutableWorkerInfo serde = mapper.readValue(mapper.writeValueAsString(workerInfo), ImmutableWorkerInfo.class);
Assert.assertEquals(workerInfo, serde);
}
use of org.apache.druid.indexing.worker.Worker in project druid by druid-io.
the class HttpRemoteTaskRunnerTest method testFreshStartAndStopNoProvisioner.
/*
Simulates startup of Overlord with no provisoner. Overlord is then stopped and is expected to close down certain
things.
*/
@Test(timeout = 60_000L)
public void testFreshStartAndStopNoProvisioner() {
TestDruidNodeDiscovery druidNodeDiscovery = new TestDruidNodeDiscovery();
ProvisioningStrategy provisioningStrategy = EasyMock.createMock(ProvisioningStrategy.class);
DruidNodeDiscoveryProvider druidNodeDiscoveryProvider = EasyMock.createMock(DruidNodeDiscoveryProvider.class);
EasyMock.expect(druidNodeDiscoveryProvider.getForService(WorkerNodeService.DISCOVERY_SERVICE_KEY)).andReturn(druidNodeDiscovery).times(2);
EasyMock.expect(provisioningStrategy.makeProvisioningService(isA(HttpRemoteTaskRunner.class))).andReturn(null);
EasyMock.expectLastCall();
EasyMock.replay(druidNodeDiscoveryProvider, provisioningStrategy);
HttpRemoteTaskRunner taskRunner = new HttpRemoteTaskRunner(TestHelper.makeJsonMapper(), new HttpRemoteTaskRunnerConfig() {
@Override
public int getPendingTasksRunnerNumThreads() {
return 3;
}
}, EasyMock.createNiceMock(HttpClient.class), DSuppliers.of(new AtomicReference<>(DefaultWorkerBehaviorConfig.defaultConfig())), provisioningStrategy, druidNodeDiscoveryProvider, EasyMock.createNiceMock(TaskStorage.class), EasyMock.createNiceMock(CuratorFramework.class), new IndexerZkConfig(new ZkPathsConfig(), null, null, null, null)) {
@Override
protected WorkerHolder createWorkerHolder(ObjectMapper smileMapper, HttpClient httpClient, HttpRemoteTaskRunnerConfig config, ScheduledExecutorService workersSyncExec, WorkerHolder.Listener listener, Worker worker, List<TaskAnnouncement> knownAnnouncements) {
return HttpRemoteTaskRunnerTest.createWorkerHolder(smileMapper, httpClient, config, workersSyncExec, listener, worker, ImmutableList.of(), ImmutableList.of(), ImmutableMap.of(), new AtomicInteger(), ImmutableSet.of());
}
};
taskRunner.start();
taskRunner.stop();
EasyMock.verify(druidNodeDiscoveryProvider, provisioningStrategy);
}
Aggregations