@LifecycleStart public void start() { Preconditions.checkState(!started, "SupervisorManager already started"); log.info("Loading stored supervisors from database"); synchronized (lock) { Map<String, SupervisorSpec> supervisors = metadataSupervisorManager.getLatest(); for (String id : supervisors.keySet()) { SupervisorSpec spec = supervisors.get(id); if (!(spec instanceof NoopSupervisorSpec)) { try { createAndStartSupervisorInternal(spec, false); } catch (Exception ex) { log.error(ex, "Failed to start supervisor: [%s]", spec.getId()); } } } started = true; } }
exec = null; clearTasks(); if (!(metadataSupervisorManager.getLatest().get(supervisorId) instanceof MaterializedViewSupervisorSpec)) { clearSegments(); synchronized (taskLock) { clearTasks(); if (!(metadataSupervisorManager.getLatest().get(supervisorId) instanceof MaterializedViewSupervisorSpec)) { clearSegments();
@Test public void testStartAlreadyStarted() { EasyMock.expect(metadataSupervisorManager.getLatest()).andReturn(ImmutableMap.of()); replayAll(); exception.expect(IllegalStateException.class); manager.start(); manager.start(); }
@Test public void testCreateOrUpdateAndStartSupervisorNullSpec() { EasyMock.expect(metadataSupervisorManager.getLatest()).andReturn(ImmutableMap.of()); replayAll(); exception.expect(NullPointerException.class); manager.start(); manager.createOrUpdateAndStartSupervisor(null); verifyAll(); }
@Test public void testStopAndRemoveSupervisorNullSpecId() { EasyMock.expect(metadataSupervisorManager.getLatest()).andReturn(ImmutableMap.of()); replayAll(); exception.expect(NullPointerException.class); manager.start(); manager.stopAndRemoveSupervisor(null); verifyAll(); }
@Test public void testCreateOrUpdateAndStartSupervisorNullSpecId() { EasyMock.expect(metadataSupervisorManager.getLatest()).andReturn(ImmutableMap.of()); replayAll(); exception.expect(NullPointerException.class); manager.start(); manager.createOrUpdateAndStartSupervisor(new TestSupervisorSpec(null, null)); verifyAll(); }
@Test public void testStartIndividualSupervisorsFailStart() { Map<String, SupervisorSpec> existingSpecs = ImmutableMap.of( "id1", new TestSupervisorSpec("id1", supervisor1), "id3", new TestSupervisorSpec("id3", supervisor3) ); EasyMock.expect(metadataSupervisorManager.getLatest()).andReturn(existingSpecs); supervisor3.start(); supervisor1.start(); EasyMock.expectLastCall().andThrow(new RuntimeException("supervisor explosion")); replayAll(); manager.start(); // if we get here, we are properly insulated from exploding supervisors }
@Test public void testGetSupervisorStatus() { SupervisorReport<Void> report = new SupervisorReport<>("id1", DateTimes.nowUtc(), null); Map<String, SupervisorSpec> existingSpecs = ImmutableMap.of( "id1", new TestSupervisorSpec("id1", supervisor1) ); EasyMock.expect(metadataSupervisorManager.getLatest()).andReturn(existingSpecs); supervisor1.start(); EasyMock.expect(supervisor1.getStatus()).andReturn(report); replayAll(); manager.start(); Assert.assertEquals(Optional.absent(), manager.getSupervisorStatus("non-existent-id")); Assert.assertEquals(report, manager.getSupervisorStatus("id1").get()); verifyAll(); }
@Test public void testStopThrowsException() { Map<String, SupervisorSpec> existingSpecs = ImmutableMap.of( "id1", new TestSupervisorSpec("id1", supervisor1) ); EasyMock.expect(metadataSupervisorManager.getLatest()).andReturn(existingSpecs); supervisor1.start(); supervisor1.stop(false); EasyMock.expectLastCall().andThrow(new RuntimeException("RTE")); replayAll(); manager.start(); manager.stop(); verifyAll(); }
@Test public void testResetSupervisor() { Map<String, SupervisorSpec> existingSpecs = ImmutableMap.of( "id1", new TestSupervisorSpec("id1", supervisor1) ); EasyMock.expect(metadataSupervisorManager.getLatest()).andReturn(existingSpecs); supervisor1.start(); supervisor1.reset(EasyMock.anyObject(DataSourceMetadata.class)); replayAll(); manager.start(); Assert.assertTrue("resetValidSupervisor", manager.resetSupervisor("id1", null)); Assert.assertFalse("resetInvalidSupervisor", manager.resetSupervisor("nobody_home", null)); verifyAll(); }
EasyMock.expect(metadataSupervisorManager.getLatest()).andReturn(existingSpecs); metadataSupervisorManager.insert("id1", spec); supervisor3.start();
EasyMock.expect(metadataSupervisorManager.getLatest()).andReturn(existingSpecs); metadataSupervisorManager.insert("id1", spec); supervisor3.start();
@LifecycleStart public void start() { Preconditions.checkState(!started, "SupervisorManager already started"); log.info("Loading stored supervisors from database"); synchronized (lock) { Map<String, SupervisorSpec> supervisors = metadataSupervisorManager.getLatest(); for (String id : supervisors.keySet()) { SupervisorSpec spec = supervisors.get(id); if (!(spec instanceof NoopSupervisorSpec)) { try { createAndStartSupervisorInternal(spec, false); } catch (Exception ex) { log.error(ex, "Failed to start supervisor: [%s]", spec.getId()); } } } started = true; } }
exec = null; clearTasks(); if (!(metadataSupervisorManager.getLatest().get(supervisorId) instanceof MaterializedViewSupervisorSpec)) { clearSegments(); synchronized (taskLock) { clearTasks(); if (!(metadataSupervisorManager.getLatest().get(supervisorId) instanceof MaterializedViewSupervisorSpec)) { clearSegments();