public UpgradeSSTableStep( String daemon, CassandraState cassandraState, CassandraOfferRequirementProvider provider, UpgradeSSTableContext context) { super(daemon, UpgradeSSTableTask.nameForDaemon(daemon), cassandraState, provider); this.context = context; }
@Override public UpgradeSSTableTask updateId() { return new UpgradeSSTableTask(getBuilder().setTaskId(createId(getName())) .build()); }
public UpgradeSSTableContext getUpgradeSSTableContext() { return getData().getUpgradeSSTableContext(); }
@Override public UpgradeSSTableTask update(Protos.TaskState state) { return new UpgradeSSTableTask(getBuilder().setData( getData().withState(state).getBytes()).build()); }
public static UpgradeSSTableTask create( final Protos.TaskInfo template, final CassandraDaemonTask daemon, final UpgradeSSTableContext context) { CassandraData data = CassandraData.createUpgradeSSTableData("", context); String name = nameForDaemon(daemon); Protos.TaskInfo completedTemplate = Protos.TaskInfo.newBuilder(template) .setName(name) .setTaskId(TaskUtils.toTaskId(name)) .setData(data.getBytes()) .build(); completedTemplate = TaskUtils.clearTransient(completedTemplate); return new UpgradeSSTableTask(completedTemplate); }
@Test public void testTaskStart() throws Exception { final CassandraDaemonTask daemonTask = Mockito.mock(CassandraDaemonTask.class); Mockito.when(cassandraState.get(UPGRADESSTABLE_NODE_0)).thenReturn(Optional.empty()); final HashMap<String, CassandraDaemonTask> map = new HashMap<>(); map.put(NODE_0, daemonTask); Mockito.when(cassandraState.getDaemons()).thenReturn(map); final UpgradeSSTableTask task = Mockito.mock(UpgradeSSTableTask.class); Mockito.when(task.getSlaveId()).thenReturn("1234"); Mockito.when(task.getType()).thenReturn(CassandraTask.TYPE.CLEANUP); Mockito.when(cassandraState.getOrCreateUpgradeSSTable(daemonTask, CONTEXT)).thenReturn(task); final UpgradeSSTableStep step = new UpgradeSSTableStep(NODE_0, cassandraState, provider, CONTEXT); final OfferRequirement requirement = Mockito.mock(OfferRequirement.class); Mockito.when(provider.getUpdateOfferRequirement(Mockito.any(), Mockito.any())).thenReturn(requirement); Assert.assertTrue(step.start().isPresent()); // not IN_PROGRESS until the requirement is fulfilled!: Assert.assertEquals(Status.PENDING, step.getStatus()); } }
public static UpgradeSSTableTask parse(final Protos.TaskInfo info) { return new UpgradeSSTableTask(info); }
public UpgradeSSTableTask createUpgradeSSTableTask( CassandraDaemonTask daemon, UpgradeSSTableContext context) throws PersistenceException { Optional<Protos.TaskInfo> template = getTemplate(daemon); if (template.isPresent()) { return UpgradeSSTableTask.create(template.get(), daemon, context); } else { throw new PersistenceException("Failed to retrieve ClusterTask Template."); } }
private void sendStatus(ExecutorDriver driver, Protos.TaskState state, String message) { Protos.TaskStatus status = task.createStatus(state, Optional.of(message)).getTaskStatus(); driver.sendStatusUpdate(status); }
@Test public void testTaskStartAlreadyCompleted() throws Exception { final CassandraDaemonTask daemonTask = Mockito.mock(CassandraDaemonTask.class); Mockito.when(cassandraState.get(UPGRADESSTABLE_NODE_0)).thenReturn(Optional.empty()); final HashMap<String, CassandraDaemonTask> map = new HashMap<>(); map.put(NODE_0, null); Mockito.when(cassandraState.getDaemons()).thenReturn(map); final UpgradeSSTableContext context = UpgradeSSTableContext.create(Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); final UpgradeSSTableTask task = Mockito.mock(UpgradeSSTableTask.class); Mockito.when(task.getSlaveId()).thenReturn("1234"); Mockito.when(cassandraState.getOrCreateUpgradeSSTable(daemonTask, CONTEXT)).thenReturn(task); final UpgradeSSTableStep step = new UpgradeSSTableStep(NODE_0, cassandraState, provider, context); final OfferRequirement requirement = Mockito.mock(OfferRequirement.class); Mockito.when(provider.getUpdateOfferRequirement(Mockito.any(), Mockito.any())).thenReturn(requirement); Assert.assertTrue(!step.start().isPresent()); Assert.assertTrue(step.isComplete()); }
@Override public UpgradeSSTableTask update(Protos.Offer offer) { return new UpgradeSSTableTask(getBuilder() .setSlaveId(offer.getSlaveId()) .setData(getData().withHostname(offer.getHostname()).getBytes()) .build()); }
/** * Gets the name of a UpgradeSSTableTask for a CassandraDaemonTask. * * @param daemon The CassandraDaemonTask for which the snapshot will be * uploaded. * @return The name of the UpgradeSSTableTask for daemon. */ public static final String nameForDaemon(final CassandraDaemonTask daemon) { return nameForDaemon(daemon.getName()); }
public UpgradeSSTableTask getOrCreateUpgradeSSTable( CassandraDaemonTask daemon, UpgradeSSTableContext context) throws PersistenceException { String name = UpgradeSSTableTask.nameForDaemon(daemon); Map<String, UpgradeSSTableTask> upgradesstables = getUpgradeSSTableTasks(); if (upgradesstables.containsKey(name)) { return upgradesstables.get(name); } else { return createUpgradeSSTableTask(daemon, context); } }