Skip to content

Commit bd60f5f

Browse files
author
Phil Winder
committed
Merge pull request #458 from mesos/bug/executorHostMode
Reverted to host mode so ES can cluster. LIBPROCESS_IP is now set by …
2 parents 6b4db64 + 6087015 commit bd60f5f

File tree

3 files changed

+15
-17
lines changed

3 files changed

+15
-17
lines changed

executor/start-executor.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
#!/bin/bash
2-
LIBPROCESS_IP=$(ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}')
2+
if [ -z "$LIBPROCESS_IP" ]; then
3+
# Get the first non local IP address. Make sure you /etc/hosts file is correctly set.
4+
export LIBPROCESS_IP=$(hostname -I | awk '{ print $1}' | tr -d "\n")
5+
fi
6+
echo "LIBPROCESS_IP is set to '$LIBPROCESS_IP'";
7+
38
java $JAVA_OPTS -Djava.library.path=/usr/local/lib -jar /tmp/elasticsearch-mesos-executor.jar $@

scheduler/src/main/java/org/apache/mesos/elasticsearch/scheduler/TaskInfoFactory.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import java.time.ZoneOffset;
2121
import java.time.ZonedDateTime;
2222
import java.util.*;
23-
import java.util.stream.Collectors;
2423

2524
import static java.util.Arrays.asList;
2625
import static org.apache.mesos.elasticsearch.common.elasticsearch.ElasticsearchSettings.CONTAINER_DATA_VOLUME;
@@ -84,7 +83,7 @@ public Protos.TaskInfo createTask(Configuration configuration, FrameworkState fr
8483
.setSlaveId(offer.getSlaveId())
8584
.addAllResources(acceptedResources)
8685
.setDiscovery(discovery)
87-
.setExecutor(newExecutorInfo(configuration, discoveryPorts.build())).build();
86+
.setExecutor(newExecutorInfo(configuration)).build();
8887
}
8988

9089
public ByteString toData(String hostname, String ipAddress, ZonedDateTime zonedDateTime) {
@@ -102,22 +101,17 @@ public ByteString toData(String hostname, String ipAddress, ZonedDateTime zonedD
102101
return ByteString.copyFromUtf8(writer.getBuffer().toString());
103102
}
104103

105-
private Protos.ExecutorInfo.Builder newExecutorInfo(Configuration configuration, Protos.Ports discoveryPorts) {
104+
private Protos.ExecutorInfo.Builder newExecutorInfo(Configuration configuration) {
106105
Protos.ExecutorInfo.Builder executorInfoBuilder = Protos.ExecutorInfo.newBuilder()
107106
.setExecutorId(Protos.ExecutorID.newBuilder().setValue(UUID.randomUUID().toString()))
108107
.setFrameworkId(frameworkState.getFrameworkID())
109108
.setName("elasticsearch-executor-" + UUID.randomUUID().toString())
110109
.setCommand(newCommandInfo(configuration));
111110
if (configuration.isFrameworkUseDocker()) {
112-
113-
List<Protos.ContainerInfo.DockerInfo.PortMapping> portMappings = discoveryPorts.getPortsList().stream().map(
114-
port -> Protos.ContainerInfo.DockerInfo.PortMapping.newBuilder().setHostPort(port.getNumber()).setContainerPort(port.getNumber()).build()
115-
).collect(Collectors.toList());
116111
Protos.ContainerInfo.DockerInfo.Builder containerBuilder = Protos.ContainerInfo.DockerInfo.newBuilder()
117112
.setImage(configuration.getExecutorImage())
118113
.setForcePullImage(configuration.getExecutorForcePullImage())
119-
.setNetwork(Protos.ContainerInfo.DockerInfo.Network.BRIDGE)
120-
.addAllPortMappings(portMappings);
114+
.setNetwork(Protos.ContainerInfo.DockerInfo.Network.HOST);
121115

122116
executorInfoBuilder.setContainer(Protos.ContainerInfo.newBuilder()
123117
.setType(Protos.ContainerInfo.Type.DOCKER)

scheduler/src/test/java/org/apache/mesos/elasticsearch/scheduler/TaskInfoFactoryTest.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -215,20 +215,19 @@ public void shouldAllowUserSpecifiedPorts() {
215215
when(configuration.getElasticsearchPorts()).thenReturn(Arrays.asList(123, 456));
216216
TaskInfoFactory factory = new TaskInfoFactory(clusterState);
217217
Protos.TaskInfo taskInfo = factory.createTask(configuration, frameworkState, getOffer(frameworkState.getFrameworkID()), new Clock());
218-
assertFalse(taskInfo.getContainer().isInitialized());
219-
assertTrue(taskInfo.getExecutor().getCommand().isInitialized());
220-
assertTrue(taskInfo.getExecutor().toString().contains("123"));
221-
assertTrue(taskInfo.getExecutor().toString().contains("456"));
218+
assertTrue(taskInfo.isInitialized());
219+
assertTrue(taskInfo.toString().contains("123"));
220+
assertTrue(taskInfo.toString().contains("456"));
222221
}
223222

224223
@Test
225224
public void shouldUseMesosProvidedPorts() {
226225
TaskInfoFactory factory = new TaskInfoFactory(clusterState);
227226
Protos.TaskInfo taskInfo = factory.createTask(configuration, frameworkState, getOffer(frameworkState.getFrameworkID()), new Clock());
228227
assertFalse(taskInfo.getContainer().isInitialized());
229-
assertTrue(taskInfo.getExecutor().getCommand().isInitialized());
230-
assertTrue(taskInfo.getExecutor().toString().contains("9200"));
231-
assertTrue(taskInfo.getExecutor().toString().contains("9300"));
228+
assertTrue(taskInfo.isInitialized());
229+
assertTrue(taskInfo.toString().contains("9200"));
230+
assertTrue(taskInfo.toString().contains("9300"));
232231
}
233232

234233
private Protos.TaskInfo createTaskInfo(Protos.TaskID taskId, ByteString data) {

0 commit comments

Comments
 (0)