diff --git a/concourse/.vscode/settings.json b/concourse/.vscode/settings.json index fe7159848..5ca129749 100644 --- a/concourse/.vscode/settings.json +++ b/concourse/.vscode/settings.json @@ -1,3 +1,4 @@ { - "python.linting.pylintEnabled": false + "python.linting.pylintEnabled": false, + "python.pythonPath": "/usr/bin/python" } \ No newline at end of file diff --git a/eclipse-distribution/local-build.sh b/eclipse-distribution/local-build.sh index 15568e1b6..e5027d910 100755 --- a/eclipse-distribution/local-build.sh +++ b/eclipse-distribution/local-build.sh @@ -1 +1,3 @@ -mvn clean package -Pe417 -Psnapshot +export JAVA_HOME=/home/kdvolder/Applications/jdk-11.0.8+10 +mvn clean package -Pe417 -Psnapshot -Dsigning.skip=true -Dhttpclient.retry-max=20 -Dmaven.test.skip=true -Declipse.p2.mirrors=false -Dtycho.localArtifacts=ignore -Dorg.eclipse.equinox.p2.transport.ecf.retry=5 -Dskip.osx.signing=true -Dskip.win.signing=true -Dskip.osx.notarizing=true + diff --git a/eclipse-extensions/org.springframework.ide.eclipse.boot.dash.docker/src/org/springframework/ide/eclipse/boot/dash/docker/runtarget/DockerContainer.java b/eclipse-extensions/org.springframework.ide.eclipse.boot.dash.docker/src/org/springframework/ide/eclipse/boot/dash/docker/runtarget/DockerContainer.java index ff48dc29e..56166e3c6 100644 --- a/eclipse-extensions/org.springframework.ide.eclipse.boot.dash.docker/src/org/springframework/ide/eclipse/boot/dash/docker/runtarget/DockerContainer.java +++ b/eclipse-extensions/org.springframework.ide.eclipse.boot.dash.docker/src/org/springframework/ide/eclipse/boot/dash/docker/runtarget/DockerContainer.java @@ -50,6 +50,7 @@ import org.springframework.ide.eclipse.boot.dash.api.Styleable; import org.springframework.ide.eclipse.boot.dash.console.LogType; import org.springframework.ide.eclipse.boot.dash.devtools.DevtoolsUtil; import org.springframework.ide.eclipse.boot.dash.docker.jmx.JmxSupport; +import org.springframework.ide.eclipse.boot.dash.docker.util.Ownable; import org.springframework.ide.eclipse.boot.dash.model.RunState; import org.springframework.ide.eclipse.boot.dash.model.remote.RefreshStateTracker; import org.springframework.ide.eclipse.boot.util.RetryUtil; @@ -359,6 +360,8 @@ public class DockerContainer implements App, RunStateProvider, JmxConnectable, S .thenValAt("dependencies") .thenAnyChild() .thenValAt("name"); + + private static final boolean USE_DEDICATED_CLIENT = false; private Supplier hasDevtoolsDep; @@ -454,10 +457,10 @@ public class DockerContainer implements App, RunStateProvider, JmxConnectable, S private final CompletableFuture closeable = new CompletableFuture(); - private DockerClient dedicatedClient; + private Ownable client; - public LogHandler(DockerClient dedicatedClient, AppConsole console) { - this.dedicatedClient = dedicatedClient; + public LogHandler(Ownable client, AppConsole console) { + this.client = client; consoleOut = console.getOutputStream(LogType.APP_OUT); consoleErr = console.getOutputStream(LogType.APP_OUT); Log.info("Creating log handler. Now active: "+activeLogHandlers.incrementAndGet()); @@ -482,11 +485,12 @@ public class DockerContainer implements App, RunStateProvider, JmxConnectable, S } catch (IOException e) { } try { - Log.info("Closing log handler. Now active: "+activeLogHandlers.decrementAndGet()); - dedicatedClient.close(); + if (client.isOwned) { + client.ref.close(); + } } catch (IOException e) { - //ignore } + Log.info("Closing log handler. Now active: "+activeLogHandlers.decrementAndGet()); } } @@ -530,14 +534,16 @@ public class DockerContainer implements App, RunStateProvider, JmxConnectable, S } public static LogConnection connectLog(DockerRunTarget target, String containerId, AppConsole console, boolean includeHistory) { - DockerClient client = target.getDedicatedClientInstance(); - //Uses a dedicated client for log streaming because java docker client will eventually run out of connections in connection pool + //Use a dedicated client for log streaming because java docker client will eventually run out of connections in connection pool //otherwise. //See: // - https://www.pivotaltracker.com/n/projects/1346850 // - https://github.com/docker-java/docker-java/issues/1466 + Ownable client = USE_DEDICATED_CLIENT + ? Ownable.owned(target.getDedicatedClientInstance()) + : Ownable.borrowed(target.getClient()); if (client!=null) { - LogContainerCmd cmd = client.logContainerCmd(containerId) + LogContainerCmd cmd = client.ref.logContainerCmd(containerId) .withStdOut(true).withStdErr(true).withFollowStream(true); if (!includeHistory) { diff --git a/eclipse-extensions/org.springframework.ide.eclipse.boot.dash.docker/src/org/springframework/ide/eclipse/boot/dash/docker/runtarget/DockerRunTargetType.java b/eclipse-extensions/org.springframework.ide.eclipse.boot.dash.docker/src/org/springframework/ide/eclipse/boot/dash/docker/runtarget/DockerRunTargetType.java index 0744bce0e..81b64ddca 100644 --- a/eclipse-extensions/org.springframework.ide.eclipse.boot.dash.docker/src/org/springframework/ide/eclipse/boot/dash/docker/runtarget/DockerRunTargetType.java +++ b/eclipse-extensions/org.springframework.ide.eclipse.boot.dash.docker/src/org/springframework/ide/eclipse/boot/dash/docker/runtarget/DockerRunTargetType.java @@ -34,6 +34,7 @@ import com.github.dockerjava.api.DockerClient; import com.github.dockerjava.core.DefaultDockerClientConfig; import com.github.dockerjava.core.DockerClientImpl; import com.github.dockerjava.transport.DockerHttpClient; +import com.github.dockerjava.zerodep.ConnectionPoolConfig; import com.github.dockerjava.zerodep.ZerodepDockerHttpClient; public class DockerRunTargetType extends AbstractRemoteRunTargetType { @@ -84,6 +85,9 @@ public class DockerRunTargetType extends AbstractRemoteRunTargetType { + + public final T ref; + public final boolean isOwned; + + private Ownable(T ref, boolean owned) { + this.ref = ref; + this.isOwned = owned; + } + + public static Ownable owned(T x) { + return x == null ? null : new Ownable(x, true); + } + + public static Ownable borrowed(T x) { + return x == null ? null : new Ownable(x, false); + } + +} diff --git a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/.classpath b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/.classpath index 0bb26a65e..85483a978 100644 --- a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/.classpath +++ b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/.classpath @@ -1,22 +1,27 @@ + + + + + + + + + + - - - - - - + diff --git a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/META-INF/MANIFEST.MF b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/META-INF/MANIFEST.MF index d41c8dc2f..5e7a2f34e 100644 --- a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/META-INF/MANIFEST.MF +++ b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/META-INF/MANIFEST.MF @@ -11,16 +11,16 @@ Bundle-ClassPath: ., dependency/commons-compress-1.20.jar, dependency/commons-io-2.6.jar, dependency/commons-lang-2.6.jar, - dependency/docker-java-api-3.2.5.jar, - dependency/docker-java-core-3.2.5.jar, - dependency/docker-java-transport-3.2.5.jar, - dependency/docker-java-transport-zerodep-3.2.5.jar, - dependency/guava-19.0.jar, dependency/jackson-annotations-2.11.2.jar, dependency/jackson-core-2.11.2.jar, dependency/jackson-databind-2.11.2.jar, dependency/jna-5.5.0.jar, - dependency/slf4j-api-1.7.30.jar + dependency/slf4j-api-1.7.30.jar, + dependency/slf4j-simple-1.7.30.jar, + dependency/docker-java-api-99.99.99-SNAPSHOT.jar, + dependency/docker-java-core-99.99.99-SNAPSHOT.jar, + dependency/docker-java-transport-99.99.99-SNAPSHOT.jar, + dependency/docker-java-transport-zerodep-99.99.99-SNAPSHOT.jar Export-Package: com.github.dockerjava.api, com.github.dockerjava.api.async, com.github.dockerjava.api.command, @@ -97,3 +97,4 @@ Export-Package: com.github.dockerjava.api, com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.reactor.ssl, com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.ssl, com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.util +Require-Bundle: com.google.guava diff --git a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/build.properties b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/build.properties index ac3520112..787f0d9be 100644 --- a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/build.properties +++ b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/build.properties @@ -8,13 +8,13 @@ bin.includes = META-INF/,\ dependency/commons-compress-1.20.jar,\ dependency/commons-io-2.6.jar,\ dependency/commons-lang-2.6.jar,\ - dependency/docker-java-api-3.2.5.jar,\ - dependency/docker-java-core-3.2.5.jar,\ - dependency/docker-java-transport-3.2.5.jar,\ - dependency/docker-java-transport-zerodep-3.2.5.jar,\ dependency/guava-19.0.jar,\ dependency/jackson-annotations-2.11.2.jar,\ dependency/jackson-core-2.11.2.jar,\ dependency/jackson-databind-2.11.2.jar,\ dependency/jna-5.5.0.jar,\ - dependency/slf4j-api-1.7.30.jar + dependency/slf4j-api-1.7.30.jar,\ + dependency/docker-java-api-99.99.99-SNAPSHOT.jar,\ + dependency/docker-java-core-99.99.99-SNAPSHOT.jar,\ + dependency/docker-java-transport-99.99.99-SNAPSHOT.jar,\ + dependency/docker-java-transport-zerodep-99.99.99-SNAPSHOT.jar diff --git a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-api-3.2.5.jar b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-api-99.99.99-SNAPSHOT.jar similarity index 85% rename from eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-api-3.2.5.jar rename to eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-api-99.99.99-SNAPSHOT.jar index ca108e3b5..0cd5abf34 100644 Binary files a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-api-3.2.5.jar and b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-api-99.99.99-SNAPSHOT.jar differ diff --git a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-core-3.2.5.jar b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-core-99.99.99-SNAPSHOT.jar similarity index 86% rename from eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-core-3.2.5.jar rename to eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-core-99.99.99-SNAPSHOT.jar index cb6cbed04..ff56e1f62 100644 Binary files a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-core-3.2.5.jar and b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-core-99.99.99-SNAPSHOT.jar differ diff --git a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-transport-3.2.5.jar b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-transport-99.99.99-SNAPSHOT.jar similarity index 71% rename from eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-transport-3.2.5.jar rename to eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-transport-99.99.99-SNAPSHOT.jar index a60245c74..367101a09 100644 Binary files a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-transport-3.2.5.jar and b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-transport-99.99.99-SNAPSHOT.jar differ diff --git a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-transport-zerodep-3.2.5.jar b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-transport-zerodep-99.99.99-SNAPSHOT.jar similarity index 93% rename from eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-transport-zerodep-3.2.5.jar rename to eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-transport-zerodep-99.99.99-SNAPSHOT.jar index 804b8a5a4..87c1d45d0 100644 Binary files a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-transport-zerodep-3.2.5.jar and b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/docker-java-transport-zerodep-99.99.99-SNAPSHOT.jar differ diff --git a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/slf4j-simple-1.7.30.jar b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/slf4j-simple-1.7.30.jar new file mode 100644 index 000000000..6debaa9de Binary files /dev/null and b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/slf4j-simple-1.7.30.jar differ diff --git a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/docker-client-wrapper/pom.xml b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/docker-client-wrapper/pom.xml index 6a75cca44..58d65bdcf 100644 --- a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/docker-client-wrapper/pom.xml +++ b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/docker-client-wrapper/pom.xml @@ -22,12 +22,17 @@ com.github.docker-java docker-java-core - 3.2.5 + 3.2.6-SNAPSHOT com.github.docker-java docker-java-transport-zerodep - 3.2.5 + 3.2.6-SNAPSHOT + + + org.slf4j + slf4j-simple + 1.7.30 diff --git a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/docker-client-wrapper/src/main/java/com/example/demo/DockerClientWrapperApplication.java b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/docker-client-wrapper/src/main/java/com/example/demo/DockerClientWrapperApplication.java index d3231e603..1a2716d6a 100644 --- a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/docker-client-wrapper/src/main/java/com/example/demo/DockerClientWrapperApplication.java +++ b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/docker-client-wrapper/src/main/java/com/example/demo/DockerClientWrapperApplication.java @@ -7,6 +7,7 @@ import com.github.dockerjava.api.model.Image; import com.github.dockerjava.core.DefaultDockerClientConfig; import com.github.dockerjava.core.DockerClientImpl; import com.github.dockerjava.transport.DockerHttpClient; +import com.github.dockerjava.zerodep.ConnectionPoolConfig; import com.github.dockerjava.zerodep.ZerodepDockerHttpClient; public class DockerClientWrapperApplication { @@ -26,6 +27,13 @@ public class DockerClientWrapperApplication { for (Image image : imgs) { System.out.println(image.getId()); } + + if (httpClient instanceof ConnectionPoolConfig) { + ConnectionPoolConfig cp = (ConnectionPoolConfig) httpClient; + System.out.println("max = " +cp.getPoolSizeMax()); + System.out.println("max per route = "+cp.getPoolSizeDefaultMaxPerRoute()); + } + } } diff --git a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/readme.md b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/readme.md index 1fa743f19..86a000d94 100644 --- a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/readme.md +++ b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/readme.md @@ -1,4 +1,4 @@ -Alternate Docker Client +com.github.dockerjavaAlternate Docker Client ===================== Repackaged as a single osgi bundle with all its dependencies. @@ -13,7 +13,7 @@ Packaging Process: - Build the maven project `docker-client-wrapper` which is included as a sub-folder in this project. - copy all the jars from `docker-client-wrapper/target/dependency` to `dependency`. - Open `manifest.mf` with PDE tabbed editor. Select the 'Runtime' tab and then: - - clear out exported packages section then add all com.spotify.docker.client* packages back + - clear out exported packages section then add all `com.github.dockerjava*` packages back - clear our 'classpath' section and all jars in the 'dependency folder. diff --git a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/src/simplelogger.properties b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/src/simplelogger.properties new file mode 100644 index 000000000..188529cef --- /dev/null +++ b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/src/simplelogger.properties @@ -0,0 +1,25 @@ +# SLF4J's SimpleLogger configuration file +# Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err. + +# Default logging detail level for all instances of SimpleLogger. +# Must be one of ("trace", "debug", "info", "warn", or "error"). +# If not specified, defaults to "info". +#org.slf4j.simpleLogger.defaultLogLevel=debug + +# Logging detail level for a SimpleLogger instance named "xxxxx". +# Must be one of ("trace", "debug", "info", "warn", or "error"). +# If not specified, the default logging detail level is used. +#org.slf4j.simpleLogger.log.xxxxx= + +# Set to true if you want the current date and time to be included in output messages. +# Default is false, and will output the number of milliseconds elapsed since startup. +#org.slf4j.simpleLogger.showDateTime=false + +# The date and time format to be used in the output messages. +# The pattern describing the date and time format is the same that is used in java.text.SimpleDateFormat. +# If the format is not specified or is invalid, the default format is used. +# The default format is yyyy-MM-dd HH:mm:ss:SSS Z. +#org.slf4j.simpleLogger.dateTimeFormat=yyyy-MM-dd HH:mm:ss:SSS Z + +#org.slf4j.simpleLogger.logFile=/tmp/sts-docker-client.log +#org.slf4j.simpleLogger.log.com.github.dockerjava.zerodep.shaded.org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager=debug \ No newline at end of file diff --git a/eclipse-extensions/org.springframework.ide.eclipse.docker.client/update-from-snapshot.sh b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/update-from-snapshot.sh new file mode 100755 index 000000000..e79e0127e --- /dev/null +++ b/eclipse-extensions/org.springframework.ide.eclipse.docker.client/update-from-snapshot.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set -e +version_override=99.99.99-SNAPSHOT +export JAVA_HOME=/home/kdvolder/Applications/jdk1.8.0_271 +cd ~/git/kdvolder/docker-java +./mvnw versions:set -DnewVersion=${version_override} +./mvnw clean package -Dmaven.test.skip=true +for f in \ + docker-java-transport/target/docker-java-transport-${version_override}.jar \ + docker-java-transport-zerodep/target/docker-java-transport-zerodep-${version_override}.jar \ + docker-java-core/target/docker-java-core-${version_override}.jar \ + docker-java-api/target/docker-java-api-${version_override}.jar +do + cp $f ~/git/sts4/eclipse-extensions/org.springframework.ide.eclipse.docker.client/dependency/ +done diff --git a/local-build.sh b/local-build.sh new file mode 100755 index 000000000..a2d1b27a2 --- /dev/null +++ b/local-build.sh @@ -0,0 +1,8 @@ +#!/bin/bash +#export JAVA_HOME=/home/kdvolder/Applications/jdk-11.0.8+10 +set -e +workdir=$(pwd) +cd $workdir/eclipse-language-servers +./local-build.sh +cd $workdir/eclipse-distribution +./local-build.sh