You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@twill.apache.org by ch...@apache.org on 2017/02/28 22:43:53 UTC
[09/12] twill git commit: Expose container instanceId instead of
parsing it from runId
Expose container instanceId instead of parsing it from runId
Project: http://git-wip-us.apache.org/repos/asf/twill/repo
Commit: http://git-wip-us.apache.org/repos/asf/twill/commit/0561fdb0
Tree: http://git-wip-us.apache.org/repos/asf/twill/tree/0561fdb0
Diff: http://git-wip-us.apache.org/repos/asf/twill/diff/0561fdb0
Branch: refs/heads/feature/twill-186
Commit: 0561fdb058098aa286e8c4fefb933e34e25e8f31
Parents: 68257b6
Author: Terence Yim <ch...@apache.org>
Authored: Tue Feb 28 11:45:06 2017 -0800
Committer: Terence Yim <ch...@apache.org>
Committed: Tue Feb 28 13:29:46 2017 -0800
----------------------------------------------------------------------
.../twill/internal/TwillContainerController.java | 10 +++++++++-
.../apache/twill/internal/TwillContainerLauncher.java | 5 +++++
.../twill/internal/appmaster/RunningContainers.java | 13 +++----------
3 files changed, 17 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/twill/blob/0561fdb0/twill-core/src/main/java/org/apache/twill/internal/TwillContainerController.java
----------------------------------------------------------------------
diff --git a/twill-core/src/main/java/org/apache/twill/internal/TwillContainerController.java b/twill-core/src/main/java/org/apache/twill/internal/TwillContainerController.java
index 692e6b2..15689f5 100644
--- a/twill-core/src/main/java/org/apache/twill/internal/TwillContainerController.java
+++ b/twill-core/src/main/java/org/apache/twill/internal/TwillContainerController.java
@@ -22,6 +22,8 @@ import com.google.common.util.concurrent.Service;
import org.apache.twill.api.ServiceController;
import org.apache.twill.internal.state.Message;
+import javax.annotation.Nullable;
+
/**
* A {@link ServiceController} that allows sending a message directly. Internal use only.
*/
@@ -36,7 +38,13 @@ public interface TwillContainerController extends ServiceController, Service {
void completed(int exitStatus);
/**
- * @returns the container's live node data.
+ * @return the container's live node data.
*/
+ @Nullable
ContainerLiveNodeData getLiveNodeData();
+
+ /**
+ * @return the instance ID of the runnable that running in the container controlled by this controller.
+ */
+ int getInstanceId();
}
http://git-wip-us.apache.org/repos/asf/twill/blob/0561fdb0/twill-core/src/main/java/org/apache/twill/internal/TwillContainerLauncher.java
----------------------------------------------------------------------
diff --git a/twill-core/src/main/java/org/apache/twill/internal/TwillContainerLauncher.java b/twill-core/src/main/java/org/apache/twill/internal/TwillContainerLauncher.java
index 8dce91e..9b6384c 100644
--- a/twill-core/src/main/java/org/apache/twill/internal/TwillContainerLauncher.java
+++ b/twill-core/src/main/java/org/apache/twill/internal/TwillContainerLauncher.java
@@ -262,6 +262,11 @@ public final class TwillContainerLauncher {
processController.cancel();
}
+ @Override
+ public int getInstanceId() {
+ return instanceId;
+ }
+
private void killAndWait(int maxWaitSecs) {
Stopwatch watch = new Stopwatch();
watch.start();
http://git-wip-us.apache.org/repos/asf/twill/blob/0561fdb0/twill-yarn/src/main/java/org/apache/twill/internal/appmaster/RunningContainers.java
----------------------------------------------------------------------
diff --git a/twill-yarn/src/main/java/org/apache/twill/internal/appmaster/RunningContainers.java b/twill-yarn/src/main/java/org/apache/twill/internal/appmaster/RunningContainers.java
index 563913b..a950c46 100644
--- a/twill-yarn/src/main/java/org/apache/twill/internal/appmaster/RunningContainers.java
+++ b/twill-yarn/src/main/java/org/apache/twill/internal/appmaster/RunningContainers.java
@@ -37,7 +37,6 @@ import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.Service;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
-
import org.apache.hadoop.yarn.api.records.ContainerState;
import org.apache.twill.api.ResourceReport;
import org.apache.twill.api.RunId;
@@ -81,7 +80,6 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
-
import javax.annotation.Nullable;
/**
@@ -238,7 +236,7 @@ final class RunningContainers {
try {
// Find the controller with particular instance id.
for (Map.Entry<String, TwillContainerController> entry : containers.row(runnableName).entrySet()) {
- if (getInstanceId(entry.getValue().getRunId()) == instanceId) {
+ if (entry.getValue().getInstanceId() == instanceId) {
containerId = entry.getKey();
controller = entry.getValue();
break;
@@ -451,7 +449,7 @@ final class RunningContainers {
for (Map.Entry<String, TwillContainerController> completedEntry : lookup.entrySet()) {
TwillContainerController controller = completedEntry.getValue();
- instanceId = getInstanceId(controller.getRunId());
+ instanceId = controller.getInstanceId();
// TODO: Can there be multiple controllers for a single container?
// TODO: What is the best way to determine whether to restart container when there are multiple controllers?
@@ -468,7 +466,7 @@ final class RunningContainers {
}
// TODO: should we remove the completed instance from instanceId and resource report even on failures?
// TODO: won't they get added back when the container is re-requested?
- removeInstanceId(runnableName, getInstanceId(controller.getRunId()));
+ removeInstanceId(runnableName, controller.getInstanceId());
resourceReport.removeRunnableResources(runnableName, containerId);
}
@@ -653,11 +651,6 @@ final class RunningContainers {
return RunIds.fromString(baseId.getId() + '-' + instanceId);
}
- private int getInstanceId(RunId runId) {
- String id = runId.getId();
- return Integer.parseInt(id.substring(id.lastIndexOf('-') + 1));
- }
-
/**
* Given the containerId, removes the corresponding containerInfo.
* @param containerId Id for the container to be removed.