SLIDER-249 in sync with current YARN-913

Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/428f3a78
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/428f3a78
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/428f3a78

Branch: refs/heads/feature/SLIDER-149_Support_a_YARN_service_registry
Commit: 428f3a78fb418b96b9071ef96fa5365c21fe92be
Parents: 0c05abe
Author: Steve Loughran <ste...@apache.org>
Authored: Mon Aug 25 19:31:09 2014 +0100
Committer: Steve Loughran <ste...@apache.org>
Committed: Mon Aug 25 19:31:09 2014 +0100

----------------------------------------------------------------------
 .../providers/agent/AgentProviderService.java   |  5 ++-
 .../server/appmaster/SliderAppMaster.java       | 34 +++++++++++++++-----
 .../actions/RegisterComponentInstance.java      |  9 ++++--
 .../YarnRegistryViewForProviders.java           |  6 ++++
 4 files changed, 40 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/428f3a78/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java
 
b/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java
index f78d468..bd83d28 100644
--- 
a/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java
+++ 
b/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java
@@ -95,7 +95,6 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -583,8 +582,8 @@ public class AgentProviderService extends 
AbstractProviderService implements
     
     // and update registration entries
     if (instance != null) {
-      queueAccess.put(new RegisterComponentInstance(instance.getId(), 0,
-          TimeUnit.MILLISECONDS));
+      queueAccess.put(new RegisterComponentInstance(instance.getId(),
+          roleName, 0, TimeUnit.MILLISECONDS));
     }
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/428f3a78/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
 
b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
index 835ef06..f28bd8f 100644
--- 
a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
+++ 
b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
@@ -365,6 +365,7 @@ public class SliderAppMaster extends 
AbstractSliderLaunchedService
   private final QueueService actionQueues = new QueueService();
   private String agentOpsUrl;
   private String agentStatusUrl;
+  private YarnRegistryViewForProviders yarnRegistryView;
 
   /**
    * Service Constructor
@@ -895,11 +896,10 @@ public class SliderAppMaster extends 
AbstractSliderLaunchedService
 
     //Give the provider restricted access to the state, registry
     setupInitialRegistryPaths();
-    YarnRegistryViewForProviders yarnRegistryView =
-        new YarnRegistryViewForProviders(
-            registryOperations, service_user_name,
-            SliderKeys.APP_TYPE,
-            instanceName);
+    yarnRegistryView = new YarnRegistryViewForProviders(
+        registryOperations, service_user_name,
+        SliderKeys.APP_TYPE,
+        instanceName);
     providerService.bindToYarnRegistry(yarnRegistryView);
     sliderAMProvider.bindToYarnRegistry(yarnRegistryView);
 
@@ -978,15 +978,26 @@ public class SliderAppMaster extends 
AbstractSliderLaunchedService
    * Handler for {@link RegisterComponentInstance action}
    * Register/re-register a component (that is already in the app state
    * @param id the component
+   * @param description
    */
-  public boolean registerComponent(ContainerId id) {
+  public boolean registerComponent(ContainerId id, String description) throws
+      IOException {
     RoleInstance instance = appState.getOwnedContainer(id);
     if (instance == null) {
       return false;
     }
     // this is where component registrations will go
     log.info("Registering component {}", id);
-
+    String cid = RegistryTypeUtils.yarnIdToDnsId(id.toString());
+    ServiceRecord container = new ServiceRecord(
+        cid,
+        description);
+    try {
+      yarnRegistryView.putComponent(cid, container, true);
+    } catch (IOException e) {
+      log.warn("Failed to register container {}/{}: {}",
+          id, description, e, e);
+    }
     return true;
   }
   
@@ -1000,6 +1011,12 @@ public class SliderAppMaster extends 
AbstractSliderLaunchedService
    */
   public void unregisterComponent(ContainerId id) {
     log.info("Unregistering component {}", id);
+    String cid = RegistryTypeUtils.yarnIdToDnsId(id.toString());
+    try {
+      yarnRegistryView.rmComponent(cid);
+    } catch (IOException e) {
+      log.warn("Failed to delete container {} : {}", id, e, e);
+    }
   }
 
   /**
@@ -1763,7 +1780,8 @@ public class SliderAppMaster extends 
AbstractSliderLaunchedService
       nmClientAsync.getContainerStatusAsync(containerId,
                                             cinfo.container.getNodeId());
       // push out a registration
-      queue(new RegisterComponentInstance(containerId, 0, 
TimeUnit.MILLISECONDS));
+      queue(new RegisterComponentInstance(containerId, cinfo.role,
+          0, TimeUnit.MILLISECONDS));
       
     } else {
       //this is a hypothetical path not seen. We react by warning

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/428f3a78/slider-core/src/main/java/org/apache/slider/server/appmaster/actions/RegisterComponentInstance.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/server/appmaster/actions/RegisterComponentInstance.java
 
b/slider-core/src/main/java/org/apache/slider/server/appmaster/actions/RegisterComponentInstance.java
index a8a6fe2..61bf5dd 100644
--- 
a/slider-core/src/main/java/org/apache/slider/server/appmaster/actions/RegisterComponentInstance.java
+++ 
b/slider-core/src/main/java/org/apache/slider/server/appmaster/actions/RegisterComponentInstance.java
@@ -26,14 +26,17 @@ import org.apache.slider.server.appmaster.state.AppState;
 import java.util.concurrent.TimeUnit;
 
 public class RegisterComponentInstance extends AsyncAction {
-  
 
   public final ContainerId containerId;
+  public final String description;
 
-  public RegisterComponentInstance(ContainerId containerId, long delay,
+  public RegisterComponentInstance(ContainerId containerId,
+      String description,
+      long delay,
       TimeUnit timeUnit) {
     super("RegisterComponentInstance :" + containerId,
         delay, timeUnit);
+    this.description = description;
     Preconditions.checkArgument(containerId != null);
     this.containerId = containerId;
   }
@@ -43,6 +46,6 @@ public class RegisterComponentInstance extends AsyncAction {
       QueueAccess queueService,
       AppState appState) throws Exception {
 
-    appMaster.registerComponent(containerId);
+    appMaster.registerComponent(containerId, description);
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/428f3a78/slider-core/src/main/java/org/apache/slider/server/services/yarnregistry/YarnRegistryViewForProviders.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/server/services/yarnregistry/YarnRegistryViewForProviders.java
 
b/slider-core/src/main/java/org/apache/slider/server/services/yarnregistry/YarnRegistryViewForProviders.java
index adf15b0..69802e8 100644
--- 
a/slider-core/src/main/java/org/apache/slider/server/services/yarnregistry/YarnRegistryViewForProviders.java
+++ 
b/slider-core/src/main/java/org/apache/slider/server/services/yarnregistry/YarnRegistryViewForProviders.java
@@ -117,4 +117,10 @@ public class YarnRegistryViewForProviders {
   }
 
 
+  public void rmComponent(String componentName) throws IOException {
+    String path = BindingUtils.componentPath(
+        user, sliderServiceclass, instanceName,
+        componentName);
+    registryOperations.delete(path, false);
+  }
 }

Reply via email to