From c686c97cb31a4de8290d3ec72a8afcceff49eeeb Mon Sep 17 00:00:00 2001 From: Alexey Ragozin Date: Mon, 22 Jan 2024 03:02:01 +0300 Subject: [PATCH 1/6] Export --add-opens and mxprx fixes --- .../java/org/gridkit/jvmtool/JmxConnectionInfo.java | 12 ++++++++---- sjk-core/src/main/java/org/gridkit/jvmtool/SJK.java | 11 +++++++---- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/sjk-core/src/main/java/org/gridkit/jvmtool/JmxConnectionInfo.java b/sjk-core/src/main/java/org/gridkit/jvmtool/JmxConnectionInfo.java index 0c1b464b..a2a3b3f9 100644 --- a/sjk-core/src/main/java/org/gridkit/jvmtool/JmxConnectionInfo.java +++ b/sjk-core/src/main/java/org/gridkit/jvmtool/JmxConnectionInfo.java @@ -279,14 +279,18 @@ public EnforcedSocketFactory(String hostname, int port, RMIClientSocketFactory d @Override public Socket createSocket(String host, int port) throws IOException { + String origAddr = host + ":" + port; + String chost = forceHostAddress ? hostname : host; + int cport = forcePort ? this.port : port; + String connAddr = chost + ":" + cport; if (diagMode) { - if (forceHostAddress && !host.equals(hostname)) { - System.out.println("Establishing connection to " + hostname + ":" + port + " (overriden from " + host + ")"); + if (!origAddr.equals(connAddr)) { + System.out.println("Establishing connection to " + chost + ":" + cport + " (overriden from " + origAddr + ")"); } else { - System.out.println("Establishing connection to " + host + ":" + port); + System.out.println("Establishing connection to " + chost + ":" + cport); } } - return delegate.createSocket(forceHostAddress ? hostname : host, forcePort ? this.port : port); + return delegate.createSocket(chost, cport); } @Override diff --git a/sjk-core/src/main/java/org/gridkit/jvmtool/SJK.java b/sjk-core/src/main/java/org/gridkit/jvmtool/SJK.java index 515e9bbf..ab9cb932 100644 --- a/sjk-core/src/main/java/org/gridkit/jvmtool/SJK.java +++ b/sjk-core/src/main/java/org/gridkit/jvmtool/SJK.java @@ -7,18 +7,21 @@ public class SJK extends CommandLauncher { - @SuppressWarnings("unused") - private static final boolean JAVA_11 = System.getProperty("java.vm.version").startsWith("11."); - public static void main(String[] args) { new SJK().start(args); } @Override protected String[] getModulesUnlockCommand() { - return new String[] {"java.base/jdk.internal.perf=ALL-UNNAMED", "jdk.attach/sun.tools.attach=ALL-UNNAMED"}; + return new String[] { + "java.base/jdk.internal.perf=ALL-UNNAMED", + "jdk.attach/sun.tools.attach=ALL-UNNAMED", + "java.rmi/sun.rmi.server=ALL-UNNAMED", + "java.rmi/sun.rmi.transport=ALL-UNNAMED", + "java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED"}; } + @Override protected List getCommandPackages() { return Arrays.asList("org.gridkit.jvmtool.cmd", "org.gridkit.jvmtool.hflame.cmd"); } From 6efdda7df801c625933daf3a0258271cb8df70c5 Mon Sep 17 00:00:00 2001 From: Alexey Ragozin Date: Mon, 22 Jan 2024 03:29:55 +0300 Subject: [PATCH 2/6] mxprx fix for address override --- .../gridkit/jvmtool/JmxConnectionInfo.java | 48 ++++++++++++++++++- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/sjk-core/src/main/java/org/gridkit/jvmtool/JmxConnectionInfo.java b/sjk-core/src/main/java/org/gridkit/jvmtool/JmxConnectionInfo.java index a2a3b3f9..fdf1fe1b 100644 --- a/sjk-core/src/main/java/org/gridkit/jvmtool/JmxConnectionInfo.java +++ b/sjk-core/src/main/java/org/gridkit/jvmtool/JmxConnectionInfo.java @@ -19,6 +19,7 @@ import java.net.MalformedURLException; import java.net.Socket; import java.rmi.NotBoundException; +import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; import java.rmi.server.ObjID; @@ -32,6 +33,8 @@ import javax.management.remote.JMXConnector; import javax.management.remote.JMXConnectorFactory; import javax.management.remote.JMXServiceURL; +import javax.management.remote.rmi.RMIConnection; +import javax.management.remote.rmi.RMIConnectionImpl_Stub; import javax.management.remote.rmi.RMIConnector; import javax.management.remote.rmi.RMIServer; import javax.management.remote.rmi.RMIServerImpl_Stub; @@ -234,14 +237,55 @@ private RMIServer overrideClientSocketFactory(String hostname, int port, RMIServ new sun.rmi.transport.tcp.TCPEndpoint(ep.getHost(), ep.getPort(), new EnforcedSocketFactory(hostname, port, ep.getClientSocketFactory()), null), false); - return new RMIServerImpl_Stub(new sun.rmi.server.UnicastRef2(nlref)); + return wrapWithSocketFactoryOverride(hostname, port, new RMIServerImpl_Stub(new sun.rmi.server.UnicastRef2(nlref))); } } catch (Exception e) { if (diagMode) { System.out.println("Failed to inject socket factory into RMIServer stub: " + e.toString()); } } - return rmiServer; + return wrapWithSocketFactoryOverride(hostname, port, rmiServer); + } + + @SuppressWarnings("restriction") + private RMIConnection overrideClientSocketFactory(String hostname, int port, RMIConnection rmiConn) { + try { + if (rmiConn instanceof RemoteObject) { + RemoteRef ref = ((RemoteObject)rmiConn).getRef(); + sun.rmi.transport.LiveRef lref = ((sun.rmi.server.UnicastRef)ref).getLiveRef(); + ObjID oid = lref.getObjID(); + sun.rmi.transport.tcp.TCPEndpoint ep = (sun.rmi.transport.tcp.TCPEndpoint)(lref.getChannel().getEndpoint()); + + sun.rmi.transport.LiveRef nlref = new sun.rmi.transport.LiveRef(oid, + new sun.rmi.transport.tcp.TCPEndpoint(ep.getHost(), ep.getPort(), new EnforcedSocketFactory(hostname, port, ep.getClientSocketFactory()), null), + false); + + return new RMIConnectionImpl_Stub(new sun.rmi.server.UnicastRef2(nlref)); + } + } catch (Exception e) { + if (diagMode) { + System.out.println("Failed to inject socket factory into RMIServer stub: " + e.toString()); + } + } + return rmiConn; + } + + private RMIServer wrapWithSocketFactoryOverride(final String hostname, final int port, final RMIServer delegate) { + + return new RMIServer() { + + @Override + public RMIConnection newClient(Object credentials) throws IOException { + RMIConnection conn = delegate.newClient(credentials); + conn = overrideClientSocketFactory(hostname, port, conn); + return conn; + } + + @Override + public String getVersion() throws RemoteException { + return delegate.getVersion(); + } + }; } private String host(String sockAddr) { From 1b86abcac7cd91bc3ae13bfe6be886015ca556ca Mon Sep 17 00:00:00 2001 From: Alexey Ragozin Date: Mon, 22 Jan 2024 03:40:01 +0300 Subject: [PATCH 3/6] more '--add-opens' --- sjk-core/src/main/java/org/gridkit/jvmtool/SJK.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sjk-core/src/main/java/org/gridkit/jvmtool/SJK.java b/sjk-core/src/main/java/org/gridkit/jvmtool/SJK.java index ab9cb932..8aa6978a 100644 --- a/sjk-core/src/main/java/org/gridkit/jvmtool/SJK.java +++ b/sjk-core/src/main/java/org/gridkit/jvmtool/SJK.java @@ -18,7 +18,8 @@ protected String[] getModulesUnlockCommand() { "jdk.attach/sun.tools.attach=ALL-UNNAMED", "java.rmi/sun.rmi.server=ALL-UNNAMED", "java.rmi/sun.rmi.transport=ALL-UNNAMED", - "java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED"}; + "java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED", + "java.rmi/sun.rmi.registry=ALL-UNNAMED"}; } @Override From 83a502d1ada57c928f10096a12284367f13682c1 Mon Sep 17 00:00:00 2001 From: Alexey Ragozin Date: Wed, 24 Jan 2024 22:38:29 +0300 Subject: [PATCH 4/6] [maven-release-plugin] prepare release jvmtool-umbrella-pom-0.23 --- gcflow/pom.xml | 2 +- mxdump/pom.xml | 2 +- pom.xml | 4 ++-- sjk-agent/pom.xml | 2 +- sjk-cli/pom.xml | 2 +- sjk-core/pom.xml | 2 +- sjk-hflame/pom.xml | 2 +- sjk-json/pom.xml | 2 +- sjk-plus/pom.xml | 2 +- sjk-stacktrace/pom.xml | 2 +- sjk-test/pom.xml | 2 +- sjk-win32/pom.xml | 2 +- sjk/pom.xml | 2 +- ygc-bench/pom.xml | 2 +- 14 files changed, 15 insertions(+), 15 deletions(-) diff --git a/gcflow/pom.xml b/gcflow/pom.xml index fee87ff2..3e1ff08f 100644 --- a/gcflow/pom.xml +++ b/gcflow/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23-SNAPSHOT + 0.23 ../pom.xml diff --git a/mxdump/pom.xml b/mxdump/pom.xml index c3534bff..f54a2439 100644 --- a/mxdump/pom.xml +++ b/mxdump/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23-SNAPSHOT + 0.23 ../pom.xml diff --git a/pom.xml b/pom.xml index 034b2151..b282e287 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23-SNAPSHOT + 0.23 ${project.groupId}::${project.artifactId} JVM tools, parent project pom @@ -69,7 +69,7 @@ scm:git:https://github.com/aragozin/jvm-tools.git scm:git:https://github.com/aragozin/jvm-tools.git https://github.com/aragozin/jvm-tools - HEAD + jvmtool-umbrella-pom-0.23 diff --git a/sjk-agent/pom.xml b/sjk-agent/pom.xml index 745a0350..470c0c60 100644 --- a/sjk-agent/pom.xml +++ b/sjk-agent/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23-SNAPSHOT + 0.23 ../pom.xml diff --git a/sjk-cli/pom.xml b/sjk-cli/pom.xml index c3d2eccb..90b75e5c 100644 --- a/sjk-cli/pom.xml +++ b/sjk-cli/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23-SNAPSHOT + 0.23 ../pom.xml diff --git a/sjk-core/pom.xml b/sjk-core/pom.xml index e4ae5f43..ced6ea64 100644 --- a/sjk-core/pom.xml +++ b/sjk-core/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23-SNAPSHOT + 0.23 ../pom.xml diff --git a/sjk-hflame/pom.xml b/sjk-hflame/pom.xml index 96d0fc91..3389febd 100644 --- a/sjk-hflame/pom.xml +++ b/sjk-hflame/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23-SNAPSHOT + 0.23 ../pom.xml diff --git a/sjk-json/pom.xml b/sjk-json/pom.xml index 6e719c2f..b9035feb 100644 --- a/sjk-json/pom.xml +++ b/sjk-json/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23-SNAPSHOT + 0.23 ../pom.xml diff --git a/sjk-plus/pom.xml b/sjk-plus/pom.xml index a0b586ed..a69d0e70 100644 --- a/sjk-plus/pom.xml +++ b/sjk-plus/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23-SNAPSHOT + 0.23 ../pom.xml diff --git a/sjk-stacktrace/pom.xml b/sjk-stacktrace/pom.xml index cba2c479..8036030f 100644 --- a/sjk-stacktrace/pom.xml +++ b/sjk-stacktrace/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23-SNAPSHOT + 0.23 ../pom.xml diff --git a/sjk-test/pom.xml b/sjk-test/pom.xml index 468e161f..f0504c77 100644 --- a/sjk-test/pom.xml +++ b/sjk-test/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23-SNAPSHOT + 0.23 ../pom.xml diff --git a/sjk-win32/pom.xml b/sjk-win32/pom.xml index 31476f06..cbc380c4 100644 --- a/sjk-win32/pom.xml +++ b/sjk-win32/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23-SNAPSHOT + 0.23 ../pom.xml diff --git a/sjk/pom.xml b/sjk/pom.xml index 7fd19531..1fa136ae 100644 --- a/sjk/pom.xml +++ b/sjk/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23-SNAPSHOT + 0.23 ../pom.xml diff --git a/ygc-bench/pom.xml b/ygc-bench/pom.xml index b386ff8b..12298dde 100644 --- a/ygc-bench/pom.xml +++ b/ygc-bench/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23-SNAPSHOT + 0.23 ../pom.xml From 21b11aef6f5e4f6a0d99cab0857fd11fde3e7d2f Mon Sep 17 00:00:00 2001 From: Alexey Ragozin Date: Wed, 24 Jan 2024 22:38:35 +0300 Subject: [PATCH 5/6] [maven-release-plugin] prepare for next development iteration --- gcflow/pom.xml | 2 +- mxdump/pom.xml | 2 +- pom.xml | 4 ++-- sjk-agent/pom.xml | 2 +- sjk-cli/pom.xml | 2 +- sjk-core/pom.xml | 2 +- sjk-hflame/pom.xml | 2 +- sjk-json/pom.xml | 2 +- sjk-plus/pom.xml | 2 +- sjk-stacktrace/pom.xml | 2 +- sjk-test/pom.xml | 2 +- sjk-win32/pom.xml | 2 +- sjk/pom.xml | 2 +- ygc-bench/pom.xml | 2 +- 14 files changed, 15 insertions(+), 15 deletions(-) diff --git a/gcflow/pom.xml b/gcflow/pom.xml index 3e1ff08f..5331ad8e 100644 --- a/gcflow/pom.xml +++ b/gcflow/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23 + 0.24-SNAPSHOT ../pom.xml diff --git a/mxdump/pom.xml b/mxdump/pom.xml index f54a2439..49c2e26e 100644 --- a/mxdump/pom.xml +++ b/mxdump/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23 + 0.24-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index b282e287..9551fce6 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23 + 0.24-SNAPSHOT ${project.groupId}::${project.artifactId} JVM tools, parent project pom @@ -69,7 +69,7 @@ scm:git:https://github.com/aragozin/jvm-tools.git scm:git:https://github.com/aragozin/jvm-tools.git https://github.com/aragozin/jvm-tools - jvmtool-umbrella-pom-0.23 + HEAD diff --git a/sjk-agent/pom.xml b/sjk-agent/pom.xml index 470c0c60..0233d1ef 100644 --- a/sjk-agent/pom.xml +++ b/sjk-agent/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23 + 0.24-SNAPSHOT ../pom.xml diff --git a/sjk-cli/pom.xml b/sjk-cli/pom.xml index 90b75e5c..166d15af 100644 --- a/sjk-cli/pom.xml +++ b/sjk-cli/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23 + 0.24-SNAPSHOT ../pom.xml diff --git a/sjk-core/pom.xml b/sjk-core/pom.xml index ced6ea64..2f928dc1 100644 --- a/sjk-core/pom.xml +++ b/sjk-core/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23 + 0.24-SNAPSHOT ../pom.xml diff --git a/sjk-hflame/pom.xml b/sjk-hflame/pom.xml index 3389febd..02a0e191 100644 --- a/sjk-hflame/pom.xml +++ b/sjk-hflame/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23 + 0.24-SNAPSHOT ../pom.xml diff --git a/sjk-json/pom.xml b/sjk-json/pom.xml index b9035feb..6b69726e 100644 --- a/sjk-json/pom.xml +++ b/sjk-json/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23 + 0.24-SNAPSHOT ../pom.xml diff --git a/sjk-plus/pom.xml b/sjk-plus/pom.xml index a69d0e70..f765d9c8 100644 --- a/sjk-plus/pom.xml +++ b/sjk-plus/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23 + 0.24-SNAPSHOT ../pom.xml diff --git a/sjk-stacktrace/pom.xml b/sjk-stacktrace/pom.xml index 8036030f..5673e609 100644 --- a/sjk-stacktrace/pom.xml +++ b/sjk-stacktrace/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23 + 0.24-SNAPSHOT ../pom.xml diff --git a/sjk-test/pom.xml b/sjk-test/pom.xml index f0504c77..12ffd291 100644 --- a/sjk-test/pom.xml +++ b/sjk-test/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23 + 0.24-SNAPSHOT ../pom.xml diff --git a/sjk-win32/pom.xml b/sjk-win32/pom.xml index cbc380c4..1f93256a 100644 --- a/sjk-win32/pom.xml +++ b/sjk-win32/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23 + 0.24-SNAPSHOT ../pom.xml diff --git a/sjk/pom.xml b/sjk/pom.xml index 1fa136ae..8956a665 100644 --- a/sjk/pom.xml +++ b/sjk/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23 + 0.24-SNAPSHOT ../pom.xml diff --git a/ygc-bench/pom.xml b/ygc-bench/pom.xml index 12298dde..94f5f9c1 100644 --- a/ygc-bench/pom.xml +++ b/ygc-bench/pom.xml @@ -23,7 +23,7 @@ org.gridkit.jvmtool jvmtool-umbrella-pom - 0.23 + 0.24-SNAPSHOT ../pom.xml From 4321b54dc0b4f9abc6d1c6f48c884162659fde10 Mon Sep 17 00:00:00 2001 From: Alexey Ragozin Date: Fri, 26 Jan 2024 15:20:02 +0300 Subject: [PATCH 6/6] CHANGES.md --- CHANGES.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 1bdde2dc..dfd74a11 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,11 @@ next version ---- +0.23 - 2024 Jan 24 + +- Fixed: `--force-address` option for JMX connections +- Fixed: few more packages for cage break + 0.22 - 2024 Jan 11 - Feature: Added `--json` and `--json-array` to `mx --get` command to export MBean data as JSON