| 9245 | |
| 9246 | |
| 9247 | void Slave::removeOperation(Operation* operation) |
| 9248 | { |
| 9249 | const UUID& uuid = operation->uuid(); |
| 9250 | |
| 9251 | Result<ResourceProviderID> resourceProviderId = |
| 9252 | getResourceProviderId(operation->info()); |
| 9253 | |
| 9254 | CHECK(!resourceProviderId.isError()) |
| 9255 | << "Failed to get resource provider ID: " |
| 9256 | << resourceProviderId.error(); |
| 9257 | |
| 9258 | if (resourceProviderId.isSome()) { |
| 9259 | ResourceProvider* resourceProvider = |
| 9260 | getResourceProvider(resourceProviderId.get()); |
| 9261 | |
| 9262 | CHECK_NOTNULL(resourceProvider); |
| 9263 | |
| 9264 | resourceProvider->removeOperation(operation); |
| 9265 | } |
| 9266 | |
| 9267 | CHECK(operations.contains(uuid)) |
| 9268 | << "Unknown operation (uuid: " << uuid << ")"; |
| 9269 | |
| 9270 | if (operation->info().has_id() && operation->has_framework_id()) { |
| 9271 | operationIds.erase( |
| 9272 | std::make_pair(operation->framework_id(), operation->info().id())); |
| 9273 | } |
| 9274 | |
| 9275 | operations.erase(uuid); |
| 9276 | delete operation; |
| 9277 | |
| 9278 | checkpointResourceState( |
| 9279 | totalResources.filter(mesos::needCheckpointing), false); |
| 9280 | |
| 9281 | updateDrainStatus(); |
| 9282 | } |
| 9283 | |
| 9284 | |
| 9285 | Operation* Slave::getOperation(const UUID& uuid) const |