MCPcopy Create free account
hub / github.com/apache/mesos / handleResourceProviderMessage

Method handleResourceProviderMessage

src/slave/slave.cpp:8716–9107  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

8714
8715
8716void Slave::handleResourceProviderMessage(
8717 const Future<ResourceProviderMessage>& message)
8718{
8719 // Ignore terminal messages which are not ready. These
8720 // can arise e.g., if the `Future` was discarded.
8721 if (!message.isReady()) {
8722 LOG(ERROR) << "Last resource provider message became terminal before "
8723 "becoming ready: "
8724 << (message.isFailed() ? message.failure() : "future discarded");
8725
8726 // Wait for the next message.
8727 CHECK_NOTNULL(resourceProviderManager.get())->messages().get()
8728 .onAny(defer(self(), &Self::handleResourceProviderMessage, lambda::_1));
8729
8730 return;
8731 }
8732
8733 LOG(INFO) << "Handling resource provider message '" << message.get() << "'";
8734
8735 switch(message->type) {
8736 case ResourceProviderMessage::Type::SUBSCRIBE: {
8737 CHECK_SOME(message->subscribe);
8738
8739 const ResourceProviderMessage::Subscribe& subscribe =
8740 message->subscribe.get();
8741
8742 CHECK(subscribe.info.has_id());
8743
8744 ResourceProvider* resourceProvider =
8745 getResourceProvider(subscribe.info.id());
8746
8747 if (resourceProvider == nullptr) {
8748 resourceProvider = new ResourceProvider(subscribe.info, {}, None());
8749
8750 addResourceProvider(resourceProvider);
8751 } else {
8752 // Always update the resource provider info.
8753 resourceProvider->info = subscribe.info;
8754 }
8755 break;
8756 }
8757 case ResourceProviderMessage::Type::UPDATE_STATE: {
8758 CHECK_SOME(message->updateState);
8759
8760 const ResourceProviderMessage::UpdateState& updateState =
8761 message->updateState.get();
8762
8763 ResourceProvider* resourceProvider =
8764 getResourceProvider(updateState.resourceProviderId);
8765
8766 CHECK(resourceProvider);
8767
8768 if (resourceProvider->totalResources != updateState.totalResources) {
8769 // Update the 'total' in the Slave.
8770 CHECK(totalResources.contains(resourceProvider->totalResources));
8771 totalResources -= resourceProvider->totalResources;
8772 totalResources += updateState.totalResources;
8773

Callers

nothing calls this directly

Calls 15

deferFunction · 0.85
NoneClass · 0.85
isReadyMethod · 0.80
isFailedMethod · 0.80
failureMethod · 0.80
messagesMethod · 0.80
CopyFromMethod · 0.80
infoMethod · 0.80
atMethod · 0.80
sendFunction · 0.50
stringifyFunction · 0.50
getMethod · 0.45

Tested by

no test coverage detected