Search in sources :

Example 1 with RegisterResourceManager

use of org.apache.flink.runtime.clusterframework.messages.RegisterResourceManager in project flink by apache.

the class ResourceManagerTest method testDelayedJobManagerRegistration.

/**
	 * Tests delayed or erroneous registration of the ResourceManager with the JobManager
	 */
@Test
public void testDelayedJobManagerRegistration() {
    new JavaTestKit(system) {

        {
            new Within(duration("10 seconds")) {

                @Override
                protected void run() {
                    // set a short timeout for lookups
                    Configuration shortTimeoutConfig = config.clone();
                    shortTimeoutConfig.setString(ConfigConstants.AKKA_LOOKUP_TIMEOUT, "1 s");
                    fakeJobManager = TestingUtils.createForwardingActor(system, getTestActor(), Option.<String>empty());
                    resourceManager = TestingUtils.createResourceManager(system, fakeJobManager.actor(), shortTimeoutConfig);
                    // wait for registration message
                    RegisterResourceManager msg = expectMsgClass(RegisterResourceManager.class);
                    // give wrong response
                    getLastSender().tell(new JobManagerMessages.LeaderSessionMessage(null, new Object()), fakeJobManager.actor());
                    // expect another retry and let it time out
                    expectMsgClass(RegisterResourceManager.class);
                    // wait for next try after timeout
                    expectMsgClass(RegisterResourceManager.class);
                }
            };
        }
    };
}
Also used : Configuration(org.apache.flink.configuration.Configuration) JobManagerMessages(org.apache.flink.runtime.messages.JobManagerMessages) JavaTestKit(akka.testkit.JavaTestKit) RegisterResourceManager(org.apache.flink.runtime.clusterframework.messages.RegisterResourceManager) Test(org.junit.Test)

Example 2 with RegisterResourceManager

use of org.apache.flink.runtime.clusterframework.messages.RegisterResourceManager in project flink by apache.

the class ResourceManagerTest method testTriggerReconnect.

@Test
public void testTriggerReconnect() {
    new JavaTestKit(system) {

        {
            new Within(duration("10 seconds")) {

                @Override
                protected void run() {
                    // set a long timeout for lookups such that the test fails in case of timeouts
                    Configuration shortTimeoutConfig = config.clone();
                    shortTimeoutConfig.setString(ConfigConstants.AKKA_LOOKUP_TIMEOUT, "99999 s");
                    fakeJobManager = TestingUtils.createForwardingActor(system, getTestActor(), Option.<String>empty());
                    resourceManager = TestingUtils.createResourceManager(system, fakeJobManager.actor(), shortTimeoutConfig);
                    // wait for registration message
                    RegisterResourceManager msg = expectMsgClass(RegisterResourceManager.class);
                    // all went well
                    resourceManager.tell(new RegisterResourceManagerSuccessful(fakeJobManager.actor(), Collections.<ResourceID>emptyList()), fakeJobManager);
                    // force a reconnect
                    resourceManager.tell(new TriggerRegistrationAtJobManager(fakeJobManager.actor()), fakeJobManager);
                    // new registration attempt should come in
                    expectMsgClass(RegisterResourceManager.class);
                }
            };
        }
    };
}
Also used : Configuration(org.apache.flink.configuration.Configuration) TriggerRegistrationAtJobManager(org.apache.flink.runtime.clusterframework.messages.TriggerRegistrationAtJobManager) ResourceID(org.apache.flink.runtime.clusterframework.types.ResourceID) RegisterResourceManagerSuccessful(org.apache.flink.runtime.clusterframework.messages.RegisterResourceManagerSuccessful) JavaTestKit(akka.testkit.JavaTestKit) RegisterResourceManager(org.apache.flink.runtime.clusterframework.messages.RegisterResourceManager) Test(org.junit.Test)

Example 3 with RegisterResourceManager

use of org.apache.flink.runtime.clusterframework.messages.RegisterResourceManager in project flink by apache.

the class FlinkResourceManager method triggerConnectingToJobManager.

/**
	 * Causes the resource manager to announce itself at the new leader JobManager and
	 * obtains its connection information and currently known TaskManagers.
	 *
	 * @param leaderAddress The akka actor URL of the new leader JobManager.
	 */
protected void triggerConnectingToJobManager(String leaderAddress) {
    LOG.info("Trying to associate with JobManager leader " + leaderAddress);
    final Object registerMessage = decorateMessage(new RegisterResourceManager(self()));
    final Object retryMessage = decorateMessage(new TriggerRegistrationAtJobManager(leaderAddress));
    // send the registration message to the JobManager
    ActorSelection jobManagerSel = context().actorSelection(leaderAddress);
    Future<Object> future = Patterns.ask(jobManagerSel, registerMessage, new Timeout(messageTimeout));
    future.onComplete(new OnComplete<Object>() {

        @Override
        public void onComplete(Throwable failure, Object msg) {
            // only process if we haven't been connected in the meantime
            if (jobManager == null) {
                if (msg != null) {
                    if (msg instanceof LeaderSessionMessage && ((LeaderSessionMessage) msg).message() instanceof RegisterResourceManagerSuccessful) {
                        self().tell(msg, ActorRef.noSender());
                    } else {
                        LOG.error("Invalid response type to registration at JobManager: {}", msg);
                        self().tell(retryMessage, ActorRef.noSender());
                    }
                } else {
                    // no success
                    LOG.error("Resource manager could not register at JobManager", failure);
                    self().tell(retryMessage, ActorRef.noSender());
                }
            }
        }
    }, context().dispatcher());
}
Also used : LeaderSessionMessage(org.apache.flink.runtime.messages.JobManagerMessages.LeaderSessionMessage) TriggerRegistrationAtJobManager(org.apache.flink.runtime.clusterframework.messages.TriggerRegistrationAtJobManager) ActorSelection(akka.actor.ActorSelection) Timeout(akka.util.Timeout) RegisterResourceManagerSuccessful(org.apache.flink.runtime.clusterframework.messages.RegisterResourceManagerSuccessful) RegisterResourceManager(org.apache.flink.runtime.clusterframework.messages.RegisterResourceManager)

Aggregations

RegisterResourceManager (org.apache.flink.runtime.clusterframework.messages.RegisterResourceManager)3 JavaTestKit (akka.testkit.JavaTestKit)2 Configuration (org.apache.flink.configuration.Configuration)2 RegisterResourceManagerSuccessful (org.apache.flink.runtime.clusterframework.messages.RegisterResourceManagerSuccessful)2 TriggerRegistrationAtJobManager (org.apache.flink.runtime.clusterframework.messages.TriggerRegistrationAtJobManager)2 Test (org.junit.Test)2 ActorSelection (akka.actor.ActorSelection)1 Timeout (akka.util.Timeout)1 ResourceID (org.apache.flink.runtime.clusterframework.types.ResourceID)1 JobManagerMessages (org.apache.flink.runtime.messages.JobManagerMessages)1 LeaderSessionMessage (org.apache.flink.runtime.messages.JobManagerMessages.LeaderSessionMessage)1