Revert "Prevent resubscription of resource providers with unknown IDs."
This reverts commit 1679d4c85c0bd095e2dafaf7a95adde258db8179. Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/f13a6e22 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/f13a6e22 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/f13a6e22 Branch: refs/heads/master Commit: f13a6e22f7019f9bd5e8941f54fe4616df1972f4 Parents: 0f3ec50 Author: Alexander Rukletsov <[email protected]> Authored: Wed Apr 25 17:07:10 2018 +0200 Committer: Alexander Rukletsov <[email protected]> Committed: Wed Apr 25 17:07:10 2018 +0200 ---------------------------------------------------------------------- src/resource_provider/manager.cpp | 13 +---- src/tests/resource_provider_manager_tests.cpp | 61 ---------------------- 2 files changed, 1 insertion(+), 73 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/f13a6e22/src/resource_provider/manager.cpp ---------------------------------------------------------------------- diff --git a/src/resource_provider/manager.cpp b/src/resource_provider/manager.cpp index 05911de..1219bb7 100644 --- a/src/resource_provider/manager.cpp +++ b/src/resource_provider/manager.cpp @@ -678,18 +678,7 @@ void ResourceProviderManagerProcess::subscribe( // restarted or an agent failover. The 'ResourceProviderInfo' might // have been updated, but its type and name should remain the same. // We should checkpoint its 'type', 'name' and ID, then check if the - // resubscription is consistent with the checkpointed record. - - const ResourceProviderID& resourceProviderId = resourceProviderInfo.id(); - - if (!resourceProviders.known.contains(resourceProviderId)) { - LOG(INFO) - << "Dropping resubscription attempt of resource provider with ID " - << resourceProviderId - << " since it is unknown"; - - return; - } + // resubscribption is consistent with the checkpointed record. // If the resource provider is known we do not need to admit it // again, and the registrar operation implicitly succeeded. http://git-wip-us.apache.org/repos/asf/mesos/blob/f13a6e22/src/tests/resource_provider_manager_tests.cpp ---------------------------------------------------------------------- diff --git a/src/tests/resource_provider_manager_tests.cpp b/src/tests/resource_provider_manager_tests.cpp index 1ee4dc3..8c364a1 100644 --- a/src/tests/resource_provider_manager_tests.cpp +++ b/src/tests/resource_provider_manager_tests.cpp @@ -1150,67 +1150,6 @@ TEST_P(ResourceProviderManagerHttpApiTest, ResubscribeResourceProvider) } -// Test that when a resource provider attempts to resubscribe with an -// unknown ID it is not admitted but disconnected. -TEST_P(ResourceProviderManagerHttpApiTest, ResubscribeUnknownID) -{ - Clock::pause(); - - // Start master and agent. - Try<Owned<cluster::Master>> master = StartMaster(); - ASSERT_SOME(master); - - Owned<MasterDetector> detector = master.get()->createDetector(); - - slave::Flags slaveFlags = CreateSlaveFlags(); - - // For the agent's resource provider manager to start, - // the agent needs to have been assigned an agent ID. - Future<SlaveRegisteredMessage> slaveRegisteredMessage = - FUTURE_PROTOBUF(SlaveRegisteredMessage(), _, _); - - Try<Owned<cluster::Slave>> agent = StartSlave(detector.get(), slaveFlags); - ASSERT_SOME(agent); - - Clock::advance(slaveFlags.registration_backoff_factor); - Clock::settle(); - - AWAIT_READY(slaveRegisteredMessage); - - mesos::v1::ResourceProviderID resourceProviderId; - resourceProviderId.set_value(id::UUID::random().toString()); - - mesos::v1::ResourceProviderInfo resourceProviderInfo; - resourceProviderInfo.mutable_id()->CopyFrom(resourceProviderId); - resourceProviderInfo.set_type("org.apache.mesos.rp.test"); - resourceProviderInfo.set_name("test"); - - Owned<v1::MockResourceProvider> resourceProvider( - new v1::MockResourceProvider(resourceProviderInfo)); - - // We explicitly reset the resource provider after the expected - // disconnect to prevent it from resubscribing indefinitely. - Future<Nothing> disconnected; - EXPECT_CALL(*resourceProvider, disconnected()) - .WillOnce(DoAll( - Invoke([&resourceProvider]() { resourceProvider.reset(); }), - FutureSatisfy(&disconnected))); - - // Start and register a resource provider. - Owned<EndpointDetector> endpointDetector( - resource_provider::createEndpointDetector(agent.get()->pid)); - - const ContentType contentType = GetParam(); - - resourceProvider->start( - endpointDetector, - contentType, - v1::DEFAULT_CREDENTIAL); - - AWAIT_READY(disconnected); -} - - // This test verifies that a disconnected resource provider will // result in an `UpdateSlaveMessage` to be sent to the master and the // total resources of the disconnected resource provider will be
