SLIDER-286 adds the live container list as an argument in the bind() 
operation...all implementations currently discard this.


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

Branch: refs/heads/feature/SLIDER-151_REST_API
Commit: 11335c1be7f41a27354417e15ed0aa83829684f2
Parents: 1350491
Author: Steve Loughran <ste...@apache.org>
Authored: Thu Aug 7 17:37:59 2014 +0100
Committer: Steve Loughran <ste...@apache.org>
Committed: Thu Aug 7 17:37:59 2014 +0100

----------------------------------------------------------------------
 .../slider/providers/AbstractProviderService.java     |  6 ++++--
 .../org/apache/slider/providers/ProviderService.java  | 14 +++++++++-----
 .../slider/server/appmaster/SliderAppMaster.java      | 13 ++++++++-----
 .../appmaster/model/mock/MockProviderService.groovy   |  3 ++-
 .../web/rest/publisher/TestAgentProviderService.java  | 10 +++++++---
 5 files changed, 30 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/11335c1b/slider-core/src/main/java/org/apache/slider/providers/AbstractProviderService.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/providers/AbstractProviderService.java
 
b/slider-core/src/main/java/org/apache/slider/providers/AbstractProviderService.java
index 158640d..b431a10 100644
--- 
a/slider-core/src/main/java/org/apache/slider/providers/AbstractProviderService.java
+++ 
b/slider-core/src/main/java/org/apache/slider/providers/AbstractProviderService.java
@@ -20,6 +20,7 @@ package org.apache.slider.providers;
 
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.service.Service;
+import org.apache.hadoop.yarn.api.records.Container;
 import org.apache.hadoop.yarn.api.records.ContainerId;
 import org.apache.hadoop.yarn.client.api.AMRMClient;
 import org.apache.slider.api.ClusterDescription;
@@ -46,7 +47,6 @@ import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
-import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.Collection;
 import java.util.HashMap;
@@ -97,7 +97,9 @@ public abstract class AbstractProviderService
 
   @Override
   public void bind(StateAccessForProviders stateAccessor,
-      RegistryViewForProviders reg, AMViewForProviders amView) {
+      RegistryViewForProviders reg,
+      AMViewForProviders amView,
+      List<Container> liveContainers) {
     this.amState = stateAccessor;
     this.registry = reg;
     this.amView = amView;

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/11335c1b/slider-core/src/main/java/org/apache/slider/providers/ProviderService.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/providers/ProviderService.java 
b/slider-core/src/main/java/org/apache/slider/providers/ProviderService.java
index c0a75c1..1466350 100644
--- a/slider-core/src/main/java/org/apache/slider/providers/ProviderService.java
+++ b/slider-core/src/main/java/org/apache/slider/providers/ProviderService.java
@@ -42,6 +42,7 @@ import 
org.apache.slider.server.services.registry.RegistryViewForProviders;
 import java.io.File;
 import java.io.IOException;
 import java.net.URL;
+import java.util.List;
 import java.util.Map;
 
 public interface ProviderService extends ProviderCore,
@@ -74,7 +75,7 @@ public interface ProviderService extends ProviderCore,
 
   /**
    * Notify the providers of container completion
-   * @param containerId
+   * @param containerId container that has completed
    */
   void notifyContainerCompleted(ContainerId containerId);
 
@@ -148,12 +149,15 @@ public interface ProviderService extends ProviderCore,
   /**
    * bind operation -invoked before the service is started
    * @param stateAccessor interface offering read access to the state
-   * @param registry
-   * @param amView
+   * @param registry registry view
+   * @param amView AM access
+   * @param liveContainers list of live containers. If non-empty, the AM was
+   * restarted with one more running containers.
    */
   void bind(StateAccessForProviders stateAccessor,
-            RegistryViewForProviders registry,
-            AMViewForProviders amView);
+      RegistryViewForProviders registry,
+      AMViewForProviders amView,
+      List<Container> liveContainers);
 
   /**
    * Returns the agent rest operations interface.

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/11335c1b/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 e84103c..bc63351 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
@@ -133,6 +133,7 @@ import java.net.URLClassLoader;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -561,7 +562,7 @@ public class SliderAppMaster extends 
AbstractSliderLaunchedService
     }
 
     Map<String, String> envVars;
-
+    List<Container> liveContainers;
     /**
      * It is critical this section is synchronized, to stop async AM events
      * arriving while registering a restarting AM.
@@ -663,8 +664,8 @@ public class SliderAppMaster extends 
AbstractSliderLaunchedService
       }
 
       // extract container list
-      List<Container> liveContainers =
-          response.getContainersFromPreviousAttempts();
+
+      liveContainers = response.getContainersFromPreviousAttempts();
 
       //now validate the installation
       Configuration providerConf =
@@ -724,8 +725,10 @@ public class SliderAppMaster extends 
AbstractSliderLaunchedService
 
 
     //Give the provider restricted access to the state, registry
-    providerService.bind(stateForProviders, registry, this);
-    sliderAMProvider.bind(stateForProviders, registry, null);
+    providerService.bind(stateForProviders, registry, this,
+        liveContainers);
+    sliderAMProvider.bind(stateForProviders, registry, this,
+        liveContainers);
 
     // now do the registration
     registerServiceInstance(clustername, appid);

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/11335c1b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockProviderService.groovy
----------------------------------------------------------------------
diff --git 
a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockProviderService.groovy
 
b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockProviderService.groovy
index 315537c..c46b828 100644
--- 
a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockProviderService.groovy
+++ 
b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockProviderService.groovy
@@ -202,7 +202,8 @@ class MockProviderService implements ProviderService {
   void bind(
       StateAccessForProviders stateAccessor,
       RegistryViewForProviders registry,
-      AMViewForProviders amView) {
+      AMViewForProviders amView,
+      List<Container> liveContainers) {
 
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/11335c1b/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestAgentProviderService.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestAgentProviderService.java
 
b/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestAgentProviderService.java
index 92e6491..5579592 100644
--- 
a/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestAgentProviderService.java
+++ 
b/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestAgentProviderService.java
@@ -16,6 +16,7 @@
  */
 package org.apache.slider.server.appmaster.web.rest.publisher;
 
+import org.apache.hadoop.yarn.api.records.Container;
 import org.apache.slider.providers.agent.AgentProviderService;
 import org.apache.slider.server.appmaster.AMViewForProviders;
 import org.apache.slider.server.appmaster.state.StateAccessForProviders;
@@ -24,12 +25,13 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
  *
  */
-public class TestAgentProviderService extends AgentProviderService{
+public class TestAgentProviderService extends AgentProviderService {
   protected static final Logger log =
       LoggerFactory.getLogger(TestAgentProviderService.class);
 
@@ -40,8 +42,10 @@ public class TestAgentProviderService extends 
AgentProviderService{
 
   @Override
   public void bind(StateAccessForProviders stateAccessor,
-                   RegistryViewForProviders reg, AMViewForProviders amView) {
-    super.bind(stateAccessor, reg, amView);
+      RegistryViewForProviders reg,
+      AMViewForProviders amView,
+      List<Container> liveContainers) {
+    super.bind(stateAccessor, reg, amView, liveContainers);
     Map<String,String> dummyProps = new HashMap<>();
     dummyProps.put("prop1", "val1");
     dummyProps.put("prop2", "val2");

Reply via email to