LOG.info("Registering as new framework."); } else { LOG.info("Recovery scenario: re-registering using framework ID {}.", frameworkID.get().getValue()); frameworkInfo.setId(frameworkID.get());
/** * Get the persisted framework ID. * @return the current ID or empty if none is yet persisted. * @throws Exception on ZK failures, interruptions. */ @Override public Option<Protos.FrameworkID> getFrameworkID() throws Exception { synchronized (startStopLock) { verifyIsRunning(); Option<Protos.FrameworkID> frameworkID; byte[] value = frameworkIdInZooKeeper.getValue(); if (value.length == 0) { frameworkID = Option.empty(); } else { frameworkID = Option.apply(Protos.FrameworkID.newBuilder().setValue(new String(value, ConfigConstants.DEFAULT_CHARSET)).build()); } return frameworkID; } }
.setFrameworkId(Protos.FrameworkID.newBuilder() .setValue(frameworkId)) .setName(name)
if (!getFrameworkId().isInitialized()) { memoizedIsInitialized = 0; return false;
final Protos.Offer offer1 = TestUtils.generateUpdateOffer(frameworkId.getValue(), node0.getTaskInfo(), node0Template.getTaskInfo(), 3, 1024, 1024); final Protos.Offer offer2 = TestUtils.generateUpdateOffer(frameworkId.getValue(), node1.getTaskInfo(), node1Template.getTaskInfo(), 3, 1024, 1024); Mockito.reset(client); final Protos.Offer offer3 = TestUtils.generateUpdateOffer(frameworkId.getValue(), node2.getTaskInfo(), node2Template.getTaskInfo(), 3, 1024, 1024); Mockito.reset(client);
public final boolean isInitialized() { if (hasFrameworkId()) { if (!getFrameworkId().isInitialized()) { return false;
server.getConnectString(), retryPolicy); stateStore.storeFrameworkId(Protos.FrameworkID.newBuilder().setValue("1234").build()); identity = new IdentityManager( initial,stateStore);
final String frameworkIdValue = frameworkId.getValue(); LOGGER.info("Framework registered : id = {}", frameworkIdValue); try {
server.getConnectString(), retryPolicy); stateStore.storeFrameworkId(Protos.FrameworkID.newBuilder().setValue("1234").build()); identity = new IdentityManager(initial,stateStore);
server.getConnectString(), retryPolicy); stateStore.storeFrameworkId(Protos.FrameworkID.newBuilder().setValue("1234").build());
server.getConnectString(), retryPolicy); stateStore.storeFrameworkId(Protos.FrameworkID.newBuilder().setValue("1234").build());
final Protos.Offer offer1 = TestUtils.generateOffer(frameworkId.getValue(), 4, 10240, 10240); scheduler.resourceOffers(driver, Arrays.asList(offer1)); final Protos.Offer offer2 = TestUtils.generateOffer(frameworkId.getValue(), 4, 10240, 10240); scheduler.resourceOffers(driver, Arrays.asList(offer2)); final Protos.Offer offer3 = TestUtils.generateOffer(frameworkId.getValue(), 4, 10240, 10240); scheduler.resourceOffers(driver, Arrays.asList(offer3));
return false; if (!getFrameworkId().isInitialized()) { memoizedIsInitialized = 0; return false;
_state.put(FRAMEWORK_ID, id.getValue()); _offers = new HashMap<Protos.OfferID, Protos.Offer>();
if (frameworkInfo.getId().isInitialized()) { this.frameworkInfo = frameworkInfo; } else { this.frameworkInfo = Protos.FrameworkInfo.newBuilder(frameworkInfo) .setId(Protos.FrameworkID.newBuilder() .setValue(UUID.randomUUID().toString()) .build()
/** * <pre> * Identifies who generated this call. Master assigns a framework id * when a new scheduler subscribes for the first time. Once assigned, * the scheduler must set the 'framework_id' here and within its * FrameworkInfo (in any further 'Subscribe' calls). This allows the * master to identify a scheduler correctly across disconnections, * failovers, etc. * </pre> * * <code>optional .mesos.FrameworkID framework_id = 1;</code> */ public Builder mergeFrameworkId(org.apache.mesos.Protos.FrameworkID value) { if (frameworkIdBuilder_ == null) { if (((bitField0_ & 0x00000001) == 0x00000001) && frameworkId_ != null && frameworkId_ != org.apache.mesos.Protos.FrameworkID.getDefaultInstance()) { frameworkId_ = org.apache.mesos.Protos.FrameworkID.newBuilder(frameworkId_).mergeFrom(value).buildPartial(); } else { frameworkId_ = value; } onChanged(); } else { frameworkIdBuilder_.mergeFrom(value); } bitField0_ |= 0x00000001; return this; } /**
@Override public void registered( SchedulerDriver driver, Protos.FrameworkID frameworkId, Protos.MasterInfo masterInfo) { try { if (registerCalled.getAndSet(true)) { // This may occur as the result of a master election. LOGGER.info("Already registered, calling reregistered()"); reregistered(driver, masterInfo); return; } LOGGER.info("Registered framework with frameworkId: {}", frameworkId.getValue()); try { frameworkStore.storeFrameworkId(frameworkId); } catch (StateStoreException e) { LOGGER.error(String.format( "Unable to store registered framework ID '%s'", frameworkId.getValue()), e); ProcessExit.exit(ProcessExit.REGISTRATION_FAILURE, e); } updateDriverAndDomain(driver, masterInfo); mesosEventClient.registered(false); // Start background threads: offerProcessor.start(); implicitReconciler.start(); } catch (Throwable e) { logExceptionAndExit(e); } }
@Test public void installAndRecover() throws Exception { install(); Collection<? extends Step> incompleteSteps = getIncompleteSteps(); assertTrue(incompleteSteps.isEmpty()); final CassandraDaemonTask task = cassandraState.getDaemons().get("node-0"); scheduler.statusUpdate(driver, TestUtils.generateStatus(task.getTaskInfo().getTaskId(), Protos.TaskState.TASK_KILLED)); Set<Protos.TaskStatus> taskStatuses = cassandraState.getTaskStatuses(); final Optional<Protos.TaskStatus> first = taskStatuses.stream().filter(status -> status.getTaskId().equals(task.getTaskInfo().getTaskId())).findFirst(); assertEquals(Protos.TaskState.TASK_KILLED, first.get().getState()); final CassandraTask templateTask = cassandraState.get("node-0-task-template").get(); final Protos.Offer offer = TestUtils.generateReplacementOffer(frameworkId.getValue(), task.getTaskInfo(), templateTask.getTaskInfo()); scheduler.resourceOffers(driver, Arrays.asList(offer)); Collection<QueuedSchedulerDriver.OfferOperations> offerOps = driver.drainAccepted(); assertEquals(String.format("expected accepted offer: %s", offer), 1, offerOps.size()); Collection<Protos.Offer.Operation> ops = offerOps.iterator().next().getOperations(); launchAll(ops, scheduler, driver); taskStatuses = cassandraState.getTaskStatuses(); final Optional<Protos.TaskStatus> node0Status = taskStatuses.stream().filter(status -> { try { return org.apache.mesos.offer.TaskUtils.toTaskName(status.getTaskId()).equals(task.getTaskInfo().getName()); } catch (Exception e) { throw new RuntimeException(e); } }).findFirst(); assertEquals(Protos.TaskState.TASK_RUNNING, node0Status.get().getState()); }
public final boolean isInitialized() { if (!hasExecutorId()) { return false; } if (!hasFrameworkId()) { return false; } if (!getExecutorId().isInitialized()) { return false; } if (!getFrameworkId().isInitialized()) { return false; } if (hasSubscribe()) { if (!getSubscribe().isInitialized()) { return false; } } if (hasUpdate()) { if (!getUpdate().isInitialized()) { return false; } } if (hasMessage()) { if (!getMessage().isInitialized()) { return false; } } return true; }
@Test public void testExecutorStateMechanism() throws IOException, InterruptedException, ExecutionException, ClassNotFoundException { Protos.TaskStatus taskStatus = Protos.TaskStatus.getDefaultInstance(); SerializableState state = Mockito.mock(SerializableState.class); when(state.get(anyString())).thenReturn(taskStatus); Protos.FrameworkID frameworkID = Protos.FrameworkID.newBuilder().setValue(FRAMEWORK_ID).build(); Protos.SlaveID slaveID = Protos.SlaveID.newBuilder().setValue(SLAVE_ID).build(); Protos.ExecutorID executorID = Protos.ExecutorID.newBuilder().setValue(EXECUTOR_ID).build(); Protos.TaskID taskID = Protos.TaskID.newBuilder().setValue(TASK_ID).build(); Protos.TaskInfo taskInfo = Protos.TaskInfo.newBuilder() .setTaskId(taskID) .setExecutor(Protos.ExecutorInfo.newBuilder() .setExecutorId(executorID) .setCommand(Protos.CommandInfo.getDefaultInstance()) ) .setSlaveId(slaveID) .setName("Test") .build(); ESTaskStatus executorState = new ESTaskStatus(state, frameworkID, taskInfo, mock(StatePath.class)); executorState.setStatus(taskStatus); verify(state, times(1)).set(anyString(), any(Protos.TaskStatus.class)); Protos.TaskStatus newStatus = executorState.getStatus(); assertNotNull(newStatus); assertEquals(taskStatus.getExecutorId().toString(), newStatus.getExecutorId().toString()); } }