commit a59727497a9a480c05950739c07631a907cafed3 Author: Eric Yang Date: Thu Nov 15 19:42:20 2018 -0500 YARN-5168. Draft patch for exposed ports aggregation. diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ContainerStatus.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ContainerStatus.java index edc62fc..10bd1ef 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ContainerStatus.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ContainerStatus.java @@ -223,4 +223,22 @@ public ContainerSubState getContainerSubState() { throw new UnsupportedOperationException( "subclass must implement this method"); } + + /** + * Get exposed ports of the container. + * @return List of exposed ports + */ + @Public + @Unstable + public String getExposedPorts() { + throw new UnsupportedOperationException( + "subclass must implement this method"); + } + + @Private + @Unstable + public void setExposedPorts(String ports) { + throw new UnsupportedOperationException( + "subclass must implement this method"); + } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/api/records/Container.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/api/records/Container.java index 2f9af7c..6a15247 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/api/records/Container.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/api/records/Container.java @@ -20,7 +20,10 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import java.net.URI; import java.util.Date; +import java.util.List; +import java.util.Map; import java.util.Objects; import javax.xml.bind.annotation.XmlElement; @@ -52,6 +55,7 @@ private Resource resource = null; private Artifact artifact = null; private Boolean privilegedContainer = null; + private Map>> exposedPorts = null; /** * Unique container id of a running service, e.g. @@ -244,6 +248,16 @@ public void setPrivilegedContainer(Boolean privilegedContainer) { this.privilegedContainer = privilegedContainer; } + @ApiModelProperty(example = "null", value = "Ports exposed for this container.") + @JsonProperty("exposed_ports") + public Map>> getExposedPorts() { + return exposedPorts; + } + + public void setExposedPorts(Map>> ports) { + this.exposedPorts = ports; + } + @Override public boolean equals(java.lang.Object o) { if (this == o) { diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/instance/ComponentInstance.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/instance/ComponentInstance.java index 89c9a22..f9b80b8 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/instance/ComponentInstance.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/instance/ComponentInstance.java @@ -18,6 +18,8 @@ package org.apache.hadoop.yarn.service.component.instance; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.annotations.VisibleForTesting; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; @@ -66,6 +68,9 @@ import java.text.MessageFormat; import java.util.Date; import java.util.EnumSet; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; @@ -713,6 +718,14 @@ public void updateContainerStatus(ContainerStatus status) { String newIP = StringUtils.join(",", status.getIPs()); container.setIp(newIP); container.setHostname(status.getHost()); + ObjectMapper mapper = new ObjectMapper(); + Map>> ports = new HashMap>>(); + try { + ports = mapper.readValue(status.getExposedPorts(), new TypeReference>>>(){}); + container.setExposedPorts(ports); + } catch (IOException e) { + LOG.warn("Unable to process container ports mapping: {}", e); + } if (existingIP != null && newIP.equals(existingIP)) { doRegistryUpdate = false; } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ContainerStatusPBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ContainerStatusPBImpl.java index a6668da..1abfc13 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ContainerStatusPBImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ContainerStatusPBImpl.java @@ -52,6 +52,7 @@ private ContainerId containerId = null; private static final String HOST = "HOST"; private static final String IPS = "IPS"; + private static final String PORTS = "PORTS"; private Map containerAttributes = new HashMap<>(); @@ -98,6 +99,7 @@ public String toString() { sb.append("ExitStatus: ").append(getExitStatus()).append(", "); sb.append("IP: ").append(getIPs()).append(", "); sb.append("Host: ").append(getHost()).append(", "); + sb.append("ExposedPorts: ").append(getExposedPorts()).append(", "); sb.append("ContainerSubState: ").append(getContainerSubState()); sb.append("]"); return sb.toString(); @@ -319,6 +321,24 @@ public synchronized void setIPs(List ips) { } @Override + public synchronized String getExposedPorts() { + if (containerAttributes.get(PORTS) == null) { + initContainerAttributes(); + } + return containerAttributes.get(PORTS); + } + + @Override + public synchronized void setExposedPorts(String ports) { + maybeInitBuilder(); + if (ports == null) { + containerAttributes.remove(PORTS); + return; + } + containerAttributes.put(PORTS, ports); + } + + @Override public synchronized String getHost() { if (containerAttributes.get(HOST) == null) { initContainerAttributes(); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/ContainerExecutor.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/ContainerExecutor.java index 6024dbf..821f745 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/ContainerExecutor.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/ContainerExecutor.java @@ -929,4 +929,9 @@ public void run() { } return symLinks; } + + public String getExposedPorts(Container container) + throws ContainerExecutionException { + return null; + } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/LinuxContainerExecutor.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/LinuxContainerExecutor.java index 0282f58..09b0f22 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/LinuxContainerExecutor.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/LinuxContainerExecutor.java @@ -1039,4 +1039,9 @@ public synchronized void updateYarnSysFS(Context ctx, String user, } } + @Override + public String getExposedPorts(Container container) + throws ContainerExecutionException { + return linuxContainerRuntime.getExposedPorts(container); + } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/ContainerManagerImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/ContainerManagerImpl.java index 8a12c3c..560db8f 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/ContainerManagerImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/ContainerManagerImpl.java @@ -1509,6 +1509,8 @@ private void logContainerStatus(String prefix, ContainerStatus status) { sb.append(status.getIPs()).append(", "); sb.append("Host: "); sb.append(status.getHost()).append(", "); + sb.append("ExposedPorts: "); + sb.append(status.getExposedPorts()).append(", "); sb.append("ContainerSubState: "); sb.append(status.getContainerSubState()); sb.append("]"); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/container/Container.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/container/Container.java index 4912d02..faa695c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/container/Container.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/container/Container.java @@ -81,6 +81,8 @@ void setIpAndHost(String[] ipAndHost); + void setExposedPorts(String ports); + String toString(); Priority getPriority(); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/container/ContainerImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/container/ContainerImpl.java index 6716dbb..0c27aeb 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/container/ContainerImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/container/ContainerImpl.java @@ -176,6 +176,7 @@ private ReInitializationContext createContextForRollback() { private String logDir; private String host; private String ips; + private String exposedPorts; private volatile ReInitializationContext reInitContext; private volatile boolean isReInitializing = false; private volatile boolean isMarkeForKilling = false; @@ -857,6 +858,7 @@ public ContainerStatus cloneAndGetContainerStatus() { Arrays.asList(ips.split(","))); status.setHost(host); status.setContainerSubState(getContainerSubState()); + status.setExposedPorts(exposedPorts); return status; } finally { this.readLock.unlock(); @@ -2255,4 +2257,9 @@ public boolean isContainerInFinalStates() { || state == ContainerState.EXITED_WITH_FAILURE || state == ContainerState.EXITED_WITH_SUCCESS; } + + @Override + public void setExposedPorts(String ports) { + this.exposedPorts = ports; + } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/DefaultLinuxContainerRuntime.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/DefaultLinuxContainerRuntime.java index b4cead2..f59025a 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/DefaultLinuxContainerRuntime.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/DefaultLinuxContainerRuntime.java @@ -194,4 +194,9 @@ public void reapContainer(ContainerRuntimeContext ctx) public String[] getIpAndHost(Container container) { return ContainerExecutor.getLocalIpAndHost(container); } + + @Override + public String getExposedPorts(Container container) { + return null; + } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/DelegatingLinuxContainerRuntime.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/DelegatingLinuxContainerRuntime.java index 7199b54..e376bb8 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/DelegatingLinuxContainerRuntime.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/DelegatingLinuxContainerRuntime.java @@ -229,4 +229,11 @@ boolean isRuntimeAllowed(String runtimeType) { return runtimeType != null && allowedRuntimes.contains( runtimeType.toUpperCase()); } + + @Override + public String getExposedPorts(Container container) + throws ContainerExecutionException { + LinuxContainerRuntime runtime = pickContainerRuntime(container); + return runtime.getExposedPorts(container); + } } \ No newline at end of file diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/DockerLinuxContainerRuntime.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/DockerLinuxContainerRuntime.java index 9fbbc35..8165a36 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/DockerLinuxContainerRuntime.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/DockerLinuxContainerRuntime.java @@ -1217,6 +1217,22 @@ public void reapContainer(ContainerRuntimeContext ctx) return null; } + @Override + public String getExposedPorts(Container container) { + ContainerId containerId = container.getContainerId(); + String containerIdStr = containerId.toString(); + DockerInspectCommand inspectCommand = + new DockerInspectCommand(containerIdStr).getExposedPorts(); + try { + String output = executeDockerInspect(containerId, inspectCommand); + return output; + } catch (ContainerExecutionException e) { + LOG.error("Error when writing command to temp file", e); + } catch (PrivilegedOperationException e) { + LOG.error("Error when executing command.", e); + } + return null; + } private PrivilegedOperation buildLaunchOp(ContainerRuntimeContext ctx, diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/DockerInspectCommand.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/DockerInspectCommand.java index f457e12..8093393 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/DockerInspectCommand.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/DockerInspectCommand.java @@ -75,4 +75,11 @@ public PrivilegedOperation preparePrivilegedOperation( public static final String STATUS_TEMPLATE = "{{.State.Status}}"; public static final String STOPSIGNAL_TEMPLATE = "{{.Config.StopSignal}}"; + + public DockerInspectCommand getExposedPorts() { + super.addCommandArguments("format", "{{json .NetworkSettings.Ports}}"); + this.commandArguments = "--format={{json .NetworkSettings.Ports}}"; + return this; + } + } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitorImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitorImpl.java index b9e2c68..0efbb89 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitorImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitorImpl.java @@ -616,6 +616,8 @@ private void initializeProcessTrees( LOG.info("Can not get both ip and hostname: " + Arrays.toString(ipAndHost)); } + String exposedPorts = containerExecutor.getExposedPorts(container); + container.setExposedPorts(exposedPorts); } else { LOG.info(containerId + " is missing. Not setting ip and hostname"); } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/runtime/ContainerRuntime.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/runtime/ContainerRuntime.java index 01995d9..d981e15 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/runtime/ContainerRuntime.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/runtime/ContainerRuntime.java @@ -89,8 +89,19 @@ void reapContainer(ContainerRuntimeContext ctx) * Return the host and ip of the container * * @param container the {@link Container} - * @throws ContainerExecutionException if an error occurs while getting the ip - * and hostname + * @throws ContainerExecutionException if an error occurs while getting the + * ip and hostname */ - String[] getIpAndHost(Container container) throws ContainerExecutionException; + String[] getIpAndHost(Container container) + throws ContainerExecutionException; + + /** + * Return the exposed ports of the container. + * @param container the {@link Container} + * @return List of exposed ports + * @throws ContainerExecutionException if an error occurs while getting + * the exposed ports + */ + String getExposedPorts(Container container) + throws ContainerExecutionException; } \ No newline at end of file diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/docker-util.c b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/docker-util.c index 36f20b7..a74231f 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/docker-util.c +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/docker-util.c @@ -561,6 +561,7 @@ cleanup: int get_docker_inspect_command(const char *command_file, const struct configuration *conf, args *args) { const char *valid_format_strings[] = { "{{.State.Status}}", "{{range(.NetworkSettings.Networks)}}{{.IPAddress}},{{end}}{{.Config.Hostname}}", + "{{json .NetworkSettings.Ports}}", "{{.State.Status}},{{.Config.StopSignal}}"}; int ret = 0, i = 0, valid_format = 0; char *format = NULL, *container_name = NULL, *tmp_buffer = NULL; @@ -1530,6 +1531,10 @@ int get_docker_run_command(const char *command_file, const struct configuration } } + // Remove before commit + ret = add_to_args(args, "-P"); + // Remove before commit + ret = detach_container(&command_config, args); if (ret != 0) { goto free_and_exit; diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/MockLinuxContainerRuntime.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/MockLinuxContainerRuntime.java index 6bfaed1..d7aa04c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/MockLinuxContainerRuntime.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/MockLinuxContainerRuntime.java @@ -58,4 +58,9 @@ public void reapContainer(ContainerRuntimeContext ctx) {} public String[] getIpAndHost(Container container) { return new String[0]; } + + @Override + public String getExposedPorts(Container container) { + return ""; + } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/webapp/MockContainer.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/webapp/MockContainer.java index 67dfef2..c686000 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/webapp/MockContainer.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/webapp/MockContainer.java @@ -193,6 +193,10 @@ public void setIpAndHost(String[] ipAndHost) { } @Override + public void setExposedPorts(String ports) { + } + + @Override public boolean isRunning() { return false; }