From c43992ba081f5493b74106067bb66d6cc67ef9c8 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Tue, 24 Jan 2023 16:06:39 +0100 Subject: [PATCH] Change version --- dist/redhat/scylla-jmx.spec | 4 +-- install.sh | 10 +++----- pom.xml | 6 ++--- scripts/create-relocatable-package.py | 2 +- scripts/scylla-jmx | 6 +++-- scylla-apiclient/pom.xml | 12 ++++++++- .../java/com/scylladb/jmx/api/APIClient.java | 7 +++++- .../src/main/java/module-info.java | 2 ++ src/main/java/com/scylladb/jmx/main/Main.java | 25 +++++++++++++++---- .../com/scylladb/jmx/utils/APIBuilder.java | 4 +-- src/main/java/module-info.java | 6 +++++ 11 files changed, 61 insertions(+), 23 deletions(-) diff --git a/dist/redhat/scylla-jmx.spec b/dist/redhat/scylla-jmx.spec index 525f460..a14cf29 100644 --- a/dist/redhat/scylla-jmx.spec +++ b/dist/redhat/scylla-jmx.spec @@ -64,10 +64,10 @@ rm -rf $RPM_BUILD_ROOT %config(noreplace) %{_sysconfdir}/sysconfig/scylla-jmx %{_unitdir}/scylla-jmx.service /opt/scylladb/jmx/scylla-jmx -/opt/scylladb/jmx/scylla-jmx-1.0.jar +/opt/scylladb/jmx/scylla-jmx-1.1.jar /opt/scylladb/jmx/symlinks/scylla-jmx %{_prefix}/lib/scylla/jmx/scylla-jmx -%{_prefix}/lib/scylla/jmx/scylla-jmx-1.0.jar +%{_prefix}/lib/scylla/jmx/scylla-jmx-1.1.jar %{_prefix}/lib/scylla/jmx/symlinks/scylla-jmx %changelog diff --git a/install.sh b/install.sh index 9b12e14..96fd45b 100755 --- a/install.sh +++ b/install.sh @@ -89,12 +89,10 @@ if ! $packaging; then has_java=false if [ -x /usr/bin/java ]; then javaver=$(/usr/bin/java -version 2>&1|head -n1|cut -f 3 -d " ") - if [[ "$javaver" =~ ^\"1.8.0 || "$javaver" =~ ^\"11.0. ]]; then - has_java=true - fi + has_java=true fi if ! $has_java; then - echo "Please install openjdk-8 or openjdk-11 before running install.sh." + echo "Please install openjdk-8, openjdk-11, or openjdk-17 before running install.sh." exit 1 fi fi @@ -152,12 +150,12 @@ WorkingDirectory=$rprefix EOS fi -install -m644 scylla-jmx-1.0.jar "$rprefix/jmx" +install -m644 scylla-jmx-1.1.jar "$rprefix/jmx" install -m755 scylla-jmx "$rprefix/jmx" ln -sf /usr/bin/java "$rprefix/jmx/symlinks/scylla-jmx" if ! $nonroot; then install -m755 -d "$rusr"/lib/scylla/jmx/symlinks - ln -srf "$rprefix"/jmx/scylla-jmx-1.0.jar "$rusr"/lib/scylla/jmx/ + ln -srf "$rprefix"/jmx/scylla-jmx-1.1.jar "$rusr"/lib/scylla/jmx/ ln -srf "$rprefix"/jmx/scylla-jmx "$rusr"/lib/scylla/jmx/ ln -sf /usr/bin/java "$rusr"/lib/scylla/jmx/symlinks/scylla-jmx fi diff --git a/pom.xml b/pom.xml index 0bf5123..e7d8a5f 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 scylla-jmx - 1.0 + 1.1 jar @@ -35,8 +35,8 @@ maven-compiler-plugin 3.10.1 - 17 - 17 + 11 + 11 --add-exports java.management/com.sun.jmx.mbeanserver=scylla.jmx diff --git a/scripts/create-relocatable-package.py b/scripts/create-relocatable-package.py index 182570f..ecbdd6e 100755 --- a/scripts/create-relocatable-package.py +++ b/scripts/create-relocatable-package.py @@ -57,7 +57,7 @@ ar.reloc_add('build/SCYLLA-VERSION-FILE', arcname='SCYLLA-VERSION-FILE') ar.reloc_add('build/SCYLLA-PRODUCT-FILE', arcname='SCYLLA-PRODUCT-FILE') ar.reloc_add('dist') ar.reloc_add('install.sh') -ar.reloc_add('target/scylla-jmx-1.0.jar', arcname='scylla-jmx-1.0.jar') +ar.reloc_add('target/scylla-jmx-1.1.jar', arcname='scylla-jmx-1.1.jar') ar.reloc_add('scripts/scylla-jmx', arcname='scylla-jmx') ar.reloc_add('README.md') ar.reloc_add('NOTICE') diff --git a/scripts/scylla-jmx b/scripts/scylla-jmx index 1c46f4c..beb5681 100755 --- a/scripts/scylla-jmx +++ b/scripts/scylla-jmx @@ -131,11 +131,13 @@ else fi fi -exec "$LOCATION_SCRIPTS"/symlinks/scylla-jmx $DEBUG \ +"$LOCATION_SCRIPTS"/symlinks/scylla-jmx $DEBUG \ $API_PORT $API_ADDR $CONF_FILE -Xmx256m -XX:+UseSerialGC \ -XX:+HeapDumpOnOutOfMemoryError \ $JMX_AUTH $JMX_SSL $JMX_ADDR $JMX_LOCAL \ + --add-exports java.management/com.sun.jmx.mbeanserver=scylla.jmx \ + --add-exports java.management/com.sun.jmx.interceptor=scylla.jmx \ -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=$JMX_PORT \ -Djava.rmi.server.hostname=$HOSTNAME -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT \ -Djavax.management.builder.initial=com.scylladb.jmx.utils.APIBuilder \ - $PROPERTIES -jar $LOCATION/scylla-jmx-1.0.jar + $PROPERTIES -jar $LOCATION/scylla-jmx-1.1.jar diff --git a/scylla-apiclient/pom.xml b/scylla-apiclient/pom.xml index f7c5882..5a9eab6 100644 --- a/scylla-apiclient/pom.xml +++ b/scylla-apiclient/pom.xml @@ -21,6 +21,11 @@ + + org.eclipse.parsson + parsson + 1.1.1 + org.yaml snakeyaml @@ -41,6 +46,11 @@ jersey-client 3.1.0 + + org.glassfish.jersey.inject + jersey-hk2 + 3.1.0 + jakarta.json jakarta.json-api @@ -80,7 +90,7 @@ maven-compiler-plugin 3.10.1 - 17 + 11 diff --git a/scylla-apiclient/src/main/java/com/scylladb/jmx/api/APIClient.java b/scylla-apiclient/src/main/java/com/scylladb/jmx/api/APIClient.java index 4db469c..cf5f573 100644 --- a/scylla-apiclient/src/main/java/com/scylladb/jmx/api/APIClient.java +++ b/scylla-apiclient/src/main/java/com/scylladb/jmx/api/APIClient.java @@ -102,7 +102,12 @@ public class APIClient { } } } - return webTarget.request(MediaType.APPLICATION_JSON); + try { + return webTarget.request(MediaType.APPLICATION_JSON); + } catch (Exception ex) { + ex.printStackTrace(); + throw ex; + } } public Invocation.Builder get(String path) { diff --git a/scylla-apiclient/src/main/java/module-info.java b/scylla-apiclient/src/main/java/module-info.java index 1c8ae97..014475c 100644 --- a/scylla-apiclient/src/main/java/module-info.java +++ b/scylla-apiclient/src/main/java/module-info.java @@ -1,6 +1,7 @@ module scylla.apiclient { exports com.scylladb.jmx.api; exports com.scylladb.jmx.api.utils; + requires org.eclipse.parsson; requires jakarta.ws.rs; requires com.fasterxml.jackson.jakarta.rs.json; requires jersey.client; @@ -10,4 +11,5 @@ module scylla.apiclient { requires org.yaml.snakeyaml; requires com.google.common; requires jersey.common; + requires jersey.hk2; } \ No newline at end of file diff --git a/src/main/java/com/scylladb/jmx/main/Main.java b/src/main/java/com/scylladb/jmx/main/Main.java index 3aa5a2f..9651d80 100644 --- a/src/main/java/com/scylladb/jmx/main/Main.java +++ b/src/main/java/com/scylladb/jmx/main/Main.java @@ -27,12 +27,27 @@ import com.scylladb.jmx.api.APIConfig; import com.scylladb.jmx.metrics.APIMBean; public class Main { - // todo: command line options. Make us an agent class (also) - private static final APIConfig config = new APIConfig(); - public static final APIClient client = new APIClient(config); + + private static APIConfig config; + private static APIClient client; + + public static synchronized APIConfig getApiConfig() { + if (config == null) { + config = new APIConfig(); + } + return config; + } + + public static synchronized APIClient getApiClient() { + if (client == null) { + client = new APIClient(getApiConfig()); + } + return client; + } public static void main(String[] args) throws Exception { - System.out.println("Connecting to " + config.getBaseUrl()); + System.out.printf("Java %s%n", System.getProperty("java.version")); + System.out.printf("Connecting to %s%n", getApiConfig().getBaseUrl()); System.out.println("Starting the JMX server"); MBeanServer server = getPlatformMBeanServer(); @@ -40,7 +55,7 @@ public class Main { CommitLog.class, Gossiper.class, EndpointSnitchInfo.class, FailureDetector.class, CacheService.class, CompactionManager.class, GCInspector.class, StreamManager.class)) { Constructor c = clazz.getDeclaredConstructor(APIClient.class); - APIMBean m = c.newInstance(client); + APIMBean m = c.newInstance(getApiClient()); server.registerMBean(m, null); } diff --git a/src/main/java/com/scylladb/jmx/utils/APIBuilder.java b/src/main/java/com/scylladb/jmx/utils/APIBuilder.java index 08a9f48..b5ef823 100644 --- a/src/main/java/com/scylladb/jmx/utils/APIBuilder.java +++ b/src/main/java/com/scylladb/jmx/utils/APIBuilder.java @@ -3,7 +3,7 @@ package com.scylladb.jmx.utils; * Copyright 2016 ScyllaDB */ -import static com.scylladb.jmx.main.Main.client; +import static com.scylladb.jmx.main.Main.getApiClient; import static com.sun.jmx.mbeanserver.Util.wildmatch; import static java.util.logging.Level.SEVERE; import static javax.management.MBeanServerDelegate.DELEGATE_NAME; @@ -491,6 +491,6 @@ public class APIBuilder extends MBeanServerBuilder { throw new RuntimeException(e); } - return new APIMBeanServer(client, nested); + return new APIMBeanServer(getApiClient(), nested); } } diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index a5d15a5..4c7c5c9 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -1,4 +1,10 @@ module scylla.jmx { + opens com.scylladb.jmx.utils; + exports com.scylladb.jmx.utils; + opens com.scylladb.jmx.main; + exports com.scylladb.jmx.main; + opens com.scylladb.jmx.metrics; + exports com.scylladb.jmx.metrics; requires java.logging; requires java.management; requires scylla.apiclient;