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);
}
};
}
};
}
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);
}
};
}
};
}
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());
}
Aggregations