Skip to content

Commit 173400a

Browse files
committed
Ref #27090: implement timings metrics for Docker (Swarm)
1 parent c25ec87 commit 173400a

4 files changed

Lines changed: 28 additions & 15 deletions

File tree

src/main/java/eu/openanalytics/containerproxy/backend/docker/DockerEngineBackend.java

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@ public void initialize() {
6767

6868
@Override
6969
protected Container startContainer(ContainerSpec spec, Proxy proxy) throws Exception {
70+
Container container = new Container();
71+
container.setSpec(spec);
72+
container.setIndex(spec.getIndex());
73+
7074
Builder hostConfigBuilder = HostConfig.builder();
7175

7276
if (imagePullPolicy == ImagePullPolicy.Always
@@ -118,21 +122,26 @@ protected Container startContainer(ContainerSpec spec, Proxy proxy) throws Excep
118122
.cmd(spec.getCmd())
119123
.env(convertEnv(buildEnv(spec, proxy)))
120124
.build();
121-
ContainerCreation containerCreation = dockerClient.createContainer(containerConfig);
122-
123-
if (spec.getNetworkConnections() != null) {
124-
for (String networkConnection: spec.getNetworkConnections()) {
125-
dockerClient.connectToNetwork(containerCreation.id(), networkConnection);
125+
126+
try {
127+
// tell the status service we are starting the container
128+
proxyStatusService.containerStarting(proxy, container);
129+
ContainerCreation containerCreation = dockerClient.createContainer(containerConfig);
130+
container.setId(containerCreation.id());
131+
132+
if (spec.getNetworkConnections() != null) {
133+
for (String networkConnection: spec.getNetworkConnections()) {
134+
dockerClient.connectToNetwork(containerCreation.id(), networkConnection);
135+
}
126136
}
137+
138+
dockerClient.startContainer(containerCreation.id());
139+
proxyStatusService.containerStarted(proxy, container);
140+
} catch (DockerException ex) {
141+
proxyStatusService.containerStartFailed(proxy, container);
142+
throw ex;
127143
}
128-
129-
dockerClient.startContainer(containerCreation.id());
130-
131-
Container container = new Container();
132-
container.setSpec(spec);
133-
container.setId(containerCreation.id());
134-
container.setIndex(spec.getIndex());
135-
144+
136145
// Calculate proxy routes for all configured ports.
137146
for (String mappingKey: spec.getPortMapping().keySet()) {
138147
int containerPort = spec.getPortMapping().get(mappingKey);

src/main/java/eu/openanalytics/containerproxy/backend/docker/DockerSwarmBackend.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,8 @@ protected Container startContainer(ContainerSpec spec, Proxy proxy) throws Excep
177177
serviceId = dockerClient.createService(serviceSpecBuilder.build()).id();
178178
}
179179

180+
// tell the status service we are starting the container
181+
proxyStatusService.containerStarting(proxy, container);
180182
container.getParameters().put(PARAM_SERVICE_ID, serviceId);
181183

182184
// Give the service some time to start up and launch a container.
@@ -196,8 +198,10 @@ protected Container startContainer(ContainerSpec spec, Proxy proxy) throws Excep
196198

197199
if (!containerFound) {
198200
dockerClient.removeService(serviceId);
201+
proxyStatusService.containerStartFailed(proxy, container);
199202
throw new IllegalStateException("Swarm container did not start in time");
200203
}
204+
proxyStatusService.containerStarted(proxy, container);
201205

202206
// Calculate proxy routes for all configured ports.
203207
for (String mappingKey: spec.getPortMapping().keySet()) {

src/main/java/eu/openanalytics/containerproxy/backend/kubernetes/KubernetesBackend.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ protected Container startContainer(ContainerSpec spec, Proxy proxy) throws Excep
311311
container.getParameters().put(PARAM_POD, pod);
312312
proxy.getContainers().add(container);
313313

314-
proxyStatusService.containerStartupFailed(proxy, container);
314+
proxyStatusService.containerStartFailed(proxy, container);
315315
throw new ContainerProxyException("Container did not become ready in time");
316316
}
317317
proxyStatusService.containerStarted(proxy, container);

src/main/java/eu/openanalytics/containerproxy/service/ProxyStatusService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public void containerStarted(Proxy proxy, Container container) {
5757
/**
5858
* Step 3 (fail): container could not be started
5959
*/
60-
public void containerStartupFailed(Proxy proxy, Container container) {
60+
public void containerStartFailed(Proxy proxy, Container container) {
6161
startupLog.get(proxy.getId()).getStartContainer(container.getIndex()).stepFailed();
6262
startupLog.get(proxy.getId()).getCreateProxy().stepFailed();
6363
}

0 commit comments

Comments
 (0)