@Override public SingularitySlave changeState(SingularityMachineStateHistoryUpdate newState) { return new SingularitySlave(getId(), getFirstSeenAt(), newState, host, rackId, attributes, resources); }
@JsonIgnore public SingularitySlave withResources(MesosResourcesObject resources) { return new SingularitySlave(getId(), getFirstSeenAt(), getCurrentState(), host, rackId, attributes, Optional.of(resources)); }
public CheckResult checkOffer(Offer offer) { final String slaveId = offer.getAgentId().getValue(); final String rackId = slaveAndRackHelper.getRackIdOrDefault(offer); final String host = slaveAndRackHelper.getMaybeTruncatedHost(offer); final Map<String, String> textAttributes = slaveAndRackHelper.getTextAttributes(offer); final SingularitySlave slave = new SingularitySlave(slaveId, host, rackId, textAttributes, Optional.absent()); CheckResult result = check(slave, slaveManager); if (result == CheckResult.NEW) { if (inactiveSlaveManager.isInactive(slave.getHost())) { LOG.info("Slave {} on inactive host {} attempted to rejoin. Marking as decommissioned.", slave, host); slaveManager.changeState(slave, MachineState.STARTING_DECOMMISSION, Optional.of(String.format("Slave %s on inactive host %s attempted to rejoin cluster.", slaveId, host)), Optional.absent()); } else { LOG.info("Offer revealed a new slave {}", slave); } } final SingularityRack rack = new SingularityRack(rackId); if (check(rack, rackManager) == CheckResult.NEW) { LOG.info("Offer revealed a new rack {}", rack); } return result; }
SingularitySlave newSlave = new SingularitySlave(slaveId, host, rackId, textAttributes, Optional.of(slaveJsonObject.getResources()));
@Test public void testDeadSlavesArePurged() { SingularitySlave liveSlave = new SingularitySlave("1", "h1", "r1", ImmutableMap.of("uniqueAttribute", "1"), Optional.absent()); SingularitySlave deadSlave = new SingularitySlave("2", "h1", "r1", ImmutableMap.of("uniqueAttribute", "2"), Optional.absent()); final long now = System.currentTimeMillis(); liveSlave = liveSlave.changeState(new SingularityMachineStateHistoryUpdate("1", MachineState.ACTIVE, 100, Optional.absent(), Optional.absent())); deadSlave = deadSlave.changeState(new SingularityMachineStateHistoryUpdate("2", MachineState.DEAD, now - TimeUnit.HOURS.toMillis(10), Optional.absent(), Optional.absent())); slaveManager.saveObject(liveSlave); slaveManager.saveObject(deadSlave); slaveReconciliationPoller.runActionOnPoll(); Assert.assertEquals(1, slaveManager.getObjectsFiltered(MachineState.ACTIVE).size()); Assert.assertEquals(1, slaveManager.getObjectsFiltered(MachineState.DEAD).size()); configuration.setDeleteDeadSlavesAfterHours(1); slaveReconciliationPoller.runActionOnPoll(); Assert.assertEquals(1, slaveManager.getObjectsFiltered(MachineState.ACTIVE).size()); Assert.assertEquals(0, slaveManager.getObjectsFiltered(MachineState.DEAD).size()); }
public CheckResult checkOffer(Offer offer) { final String slaveId = offer.getAgentId().getValue(); final String rackId = slaveAndRackHelper.getRackIdOrDefault(offer); final String host = slaveAndRackHelper.getMaybeTruncatedHost(offer); final Map<String, String> textAttributes = slaveAndRackHelper.getTextAttributes(offer); final SingularitySlave slave = new SingularitySlave(slaveId, host, rackId, textAttributes, Optional.absent()); CheckResult result = check(slave, slaveManager); if (result == CheckResult.NEW) { if (inactiveSlaveManager.isInactive(slave.getHost())) { LOG.info("Slave {} on inactive host {} attempted to rejoin. Marking as decommissioned.", slave, host); slaveManager.changeState(slave, MachineState.STARTING_DECOMMISSION, Optional.of(String.format("Slave %s on inactive host %s attempted to rejoin cluster.", slaveId, host)), Optional.absent()); } else { LOG.info("Offer revealed a new slave {}", slave); } } final SingularityRack rack = new SingularityRack(rackId); if (check(rack, rackManager) == CheckResult.NEW) { LOG.info("Offer revealed a new rack {}", rack); } return result; }
SingularitySlave newSlave = new SingularitySlave(slaveId, host, rackId, textAttributes, Optional.of(slaveJsonObject.getResources()));
@Test public void testDeadSlavesArePurged() { SingularitySlave liveSlave = new SingularitySlave("1", "h1", "r1", ImmutableMap.of("uniqueAttribute", "1"), Optional.absent()); SingularitySlave deadSlave = new SingularitySlave("2", "h1", "r1", ImmutableMap.of("uniqueAttribute", "2"), Optional.absent()); final long now = System.currentTimeMillis(); liveSlave = liveSlave.changeState(new SingularityMachineStateHistoryUpdate("1", MachineState.ACTIVE, 100, Optional.absent(), Optional.absent())); deadSlave = deadSlave.changeState(new SingularityMachineStateHistoryUpdate("2", MachineState.DEAD, now - TimeUnit.HOURS.toMillis(10), Optional.absent(), Optional.absent())); slaveManager.saveObject(liveSlave); slaveManager.saveObject(deadSlave); slaveReconciliationPoller.runActionOnPoll(); Assert.assertEquals(1, slaveManager.getObjectsFiltered(MachineState.ACTIVE).size()); Assert.assertEquals(1, slaveManager.getObjectsFiltered(MachineState.DEAD).size()); configuration.setDeleteDeadSlavesAfterHours(1); slaveReconciliationPoller.runActionOnPoll(); Assert.assertEquals(1, slaveManager.getObjectsFiltered(MachineState.ACTIVE).size()); Assert.assertEquals(0, slaveManager.getObjectsFiltered(MachineState.DEAD).size()); }