YARN-5612. Return SubClusterId in FederationStateStoreFacade#addApplicationHomeSubCluster for Router Failover. (Giovanni Matteo Fumarola via Subru).

(cherry picked from commit ac1ba2a30427263f4a2eed2018515b2f759fa591)
This commit is contained in:
Subru Krishnan 2016-09-01 13:55:54 -07:00 committed by Carlo Curino
parent 94a24567d6
commit 1882bc10fb
2 changed files with 37 additions and 4 deletions

View File

@ -48,6 +48,7 @@
import org.apache.hadoop.yarn.exceptions.YarnRuntimeException; import org.apache.hadoop.yarn.exceptions.YarnRuntimeException;
import org.apache.hadoop.yarn.server.federation.store.FederationStateStore; import org.apache.hadoop.yarn.server.federation.store.FederationStateStore;
import org.apache.hadoop.yarn.server.federation.store.records.AddApplicationHomeSubClusterRequest; import org.apache.hadoop.yarn.server.federation.store.records.AddApplicationHomeSubClusterRequest;
import org.apache.hadoop.yarn.server.federation.store.records.AddApplicationHomeSubClusterResponse;
import org.apache.hadoop.yarn.server.federation.store.records.ApplicationHomeSubCluster; import org.apache.hadoop.yarn.server.federation.store.records.ApplicationHomeSubCluster;
import org.apache.hadoop.yarn.server.federation.store.records.GetApplicationHomeSubClusterRequest; import org.apache.hadoop.yarn.server.federation.store.records.GetApplicationHomeSubClusterRequest;
import org.apache.hadoop.yarn.server.federation.store.records.GetApplicationHomeSubClusterResponse; import org.apache.hadoop.yarn.server.federation.store.records.GetApplicationHomeSubClusterResponse;
@ -298,13 +299,15 @@ public Map<String, SubClusterPolicyConfiguration> getPoliciesConfigurations()
* *
* @param appHomeSubCluster the mapping of the application to it's home * @param appHomeSubCluster the mapping of the application to it's home
* sub-cluster * sub-cluster
* @return the stored Subcluster from StateStore
* @throws YarnException if the call to the state store is unsuccessful * @throws YarnException if the call to the state store is unsuccessful
*/ */
public void addApplicationHomeSubCluster( public SubClusterId addApplicationHomeSubCluster(
ApplicationHomeSubCluster appHomeSubCluster) throws YarnException { ApplicationHomeSubCluster appHomeSubCluster) throws YarnException {
AddApplicationHomeSubClusterResponse response =
stateStore.addApplicationHomeSubCluster( stateStore.addApplicationHomeSubCluster(
AddApplicationHomeSubClusterRequest.newInstance(appHomeSubCluster)); AddApplicationHomeSubClusterRequest.newInstance(appHomeSubCluster));
return; return response.getHomeSubCluster();
} }
/** /**

View File

@ -28,6 +28,7 @@
import org.apache.hadoop.yarn.exceptions.YarnException; import org.apache.hadoop.yarn.exceptions.YarnException;
import org.apache.hadoop.yarn.server.federation.store.FederationStateStore; import org.apache.hadoop.yarn.server.federation.store.FederationStateStore;
import org.apache.hadoop.yarn.server.federation.store.impl.MemoryFederationStateStore; import org.apache.hadoop.yarn.server.federation.store.impl.MemoryFederationStateStore;
import org.apache.hadoop.yarn.server.federation.store.records.ApplicationHomeSubCluster;
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterId; import org.apache.hadoop.yarn.server.federation.store.records.SubClusterId;
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterInfo; import org.apache.hadoop.yarn.server.federation.store.records.SubClusterInfo;
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterPolicyConfiguration; import org.apache.hadoop.yarn.server.federation.store.records.SubClusterPolicyConfiguration;
@ -145,4 +146,33 @@ public void testGetHomeSubClusterForApp() throws YarnException {
} }
} }
@Test
public void testAddApplicationHomeSubCluster() throws YarnException {
// Inserting <AppId, Home1> into FederationStateStore
ApplicationId appId = ApplicationId.newInstance(clusterTs, numApps + 1);
SubClusterId subClusterId1 = SubClusterId.newInstance("Home1");
ApplicationHomeSubCluster appHomeSubCluster =
ApplicationHomeSubCluster.newInstance(appId, subClusterId1);
SubClusterId result =
facade.addApplicationHomeSubCluster(appHomeSubCluster);
Assert.assertEquals(facade.getApplicationHomeSubCluster(appId), result);
Assert.assertEquals(subClusterId1, result);
// Inserting <AppId, Home2> into FederationStateStore.
// The application is already present.
// FederationFacade will return Home1 as SubClusterId.
SubClusterId subClusterId2 = SubClusterId.newInstance("Home2");
appHomeSubCluster =
ApplicationHomeSubCluster.newInstance(appId, subClusterId2);
result = facade.addApplicationHomeSubCluster(appHomeSubCluster);
Assert.assertEquals(facade.getApplicationHomeSubCluster(appId), result);
Assert.assertEquals(subClusterId1, result);
}
} }