Skip to content

Commit 7e182ac

Browse files
committed
Fix #32068: delay release of Docker port
1 parent 9ccde43 commit 7e182ac

3 files changed

Lines changed: 11 additions & 2 deletions

File tree

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@
4444
import java.util.HashMap;
4545
import java.util.List;
4646
import java.util.Map;
47+
import java.util.concurrent.Executors;
48+
import java.util.concurrent.ScheduledExecutorService;
49+
import java.util.concurrent.TimeUnit;
4750
import java.util.function.BiConsumer;
4851

4952

@@ -60,6 +63,8 @@ public abstract class AbstractDockerBackend extends AbstractContainerBackend {
6063
protected Integer portRangeFrom;
6164
protected Integer portRangeTo;
6265

66+
private final ScheduledExecutorService releasePortExecutor = Executors.newSingleThreadScheduledExecutor();
67+
6368
@Override
6469
public void initialize() throws ContainerProxyException {
6570
super.initialize();
@@ -147,4 +152,8 @@ protected Map<RuntimeValueKey<?>, RuntimeValue> parseLabelsAsRuntimeValues(Strin
147152
return runtimeValues;
148153
}
149154

155+
protected void releasePort(String ownerId) {
156+
releasePortExecutor.schedule(() -> portAllocator.release(ownerId), 10, TimeUnit.SECONDS);
157+
}
158+
150159
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ protected void doStopProxy(Proxy proxy) throws Exception {
222222
// ignore, container is currently being removed
223223
}
224224
}
225-
portAllocator.release(proxy.getId());
225+
releasePort(proxy.getId());
226226
}
227227

228228
@Override

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ protected void doStopProxy(Proxy proxy) throws Exception {
298298
}
299299
}
300300
}
301-
portAllocator.release(proxy.getId());
301+
releasePort(proxy.getId());
302302
}
303303

304304
@Override

0 commit comments

Comments
 (0)