diff --git a/.github/scripts/configure-ccm.sh b/.github/scripts/configure-ccm.sh index 445592f21..63c00a38f 100755 --- a/.github/scripts/configure-ccm.sh +++ b/.github/scripts/configure-ccm.sh @@ -18,6 +18,20 @@ echo "Starting Install step..." set -xe +function set_java_home() { + major_version=$1 + if [[ "$major_version" == "11" ]]; then + export CASSANDRA_USE_JDK11=true + else + export CASSANDRA_USE_JDK11=false + fi + for jdk in /opt/hostedtoolcache/Java_Adopt_jdk/${major_version}*/; + do + export JAVA_HOME="${jdk/}"x64/ + echo "JAVA_HOME is set to $JAVA_HOME" + done +} + configure_ccm () { sed -i 's/#MAX_HEAP_SIZE="4G"/MAX_HEAP_SIZE="256m"/' ~/.ccm/test/node$1/conf/cassandra-env.sh sed -i 's/#HEAP_NEWSIZE="800M"/HEAP_NEWSIZE="200M"/' ~/.ccm/test/node$1/conf/cassandra-env.sh @@ -45,6 +59,8 @@ configure_ccm () { echo "JVM_OPTS=\"\$JVM_OPTS -Djava.rmi.server.hostname=127.0.0.$i\"" >> ~/.ccm/test/node$1/conf/cassandra-env.sh } +set_java_home ${JDK_VERSION} + case "${TEST_TYPE}" in "") echo "ERROR: Environment variable TEST_TYPE is unspecified." @@ -54,8 +70,12 @@ case "${TEST_TYPE}" in mkdir -p ~/.local cp ./.github/files/jmxremote.password ~/.local/jmxremote.password chmod 400 ~/.local/jmxremote.password - sudo chmod 777 /opt/hostedtoolcache/Java_Adopt_jdk/8.0.192-12/x64/jre/lib/management/jmxremote.access - echo "cassandra readwrite" >> /opt/hostedtoolcache/Java_Adopt_jdk/8.0.192-12/x64/jre/lib/management/jmxremote.access + # Our move to support jdk11 makes it possible to get either jdk 8.0.192 or jdk 8.0.292 which both require to be configured properly. + for jdk in /opt/hostedtoolcache/Java_Adopt_jdk/8*/; + do + sudo chmod 777 "${jdk/}"x64/jre/lib/management/jmxremote.access + echo "cassandra readwrite" >> "${jdk/}"x64/jre/lib/management/jmxremote.access + done if [[ ! -z $ELASSANDRA_VERSION ]]; then ccm create test -v file:elassandra-${ELASSANDRA_VERSION}.tar.gz else diff --git a/.github/scripts/run-tests.sh b/.github/scripts/run-tests.sh index 20aa7cb95..392633a9c 100755 --- a/.github/scripts/run-tests.sh +++ b/.github/scripts/run-tests.sh @@ -19,6 +19,15 @@ REAPER_ENCRYPTION_KEY="SECRET_KEY" set -xe +function set_java_home() { + major_version=$1 + for jdk in /opt/hostedtoolcache/Java_Adopt_jdk/${major_version}*/; + do + export JAVA_HOME="${jdk/}"x64/ + echo "JAVA_HOME is set to $JAVA_HOME" + done +} + case "${TEST_TYPE}" in "") echo "ERROR: Environment variable TEST_TYPE is unspecified." @@ -40,10 +49,14 @@ case "${TEST_TYPE}" in "ccm"|"elassandra") mvn --version -B ps uax | grep cass + # dependending on the version of cassandra, we may need to use a different jdk + set_java_home ${JDK_VERSION} ccm start -v --no-wait --skip-wait-other-notice || true echo "${TEST_TYPE}" | grep -q ccm && sleep 30 || sleep 120 ccm status ccm node1 nodetool -- -u cassandra -pw cassandrapassword status + # Reaper requires JDK11 for compilation + set_java_home 11 case "${STORAGE_TYPE}" in "") echo "ERROR: Environment variable STORAGE_TYPE is unspecified." @@ -68,10 +81,12 @@ case "${TEST_TYPE}" in "sidecar") mvn --version -B mvn -B package -DskipTests + # dependending on the version of cassandra, we may need to use a different jdk + set_java_home ${JDK_VERSION} ccm start -v --no-wait --skip-wait-other-notice || true sleep 30 ccm status - + set_java_home 11 case "${STORAGE_TYPE}" in "") echo "ERROR: Environment variable STORAGE_TYPE is unspecified." @@ -90,10 +105,12 @@ case "${TEST_TYPE}" in "each") mvn --version -B mvn -B package -DskipTests + # dependending on the version of cassandra, we may need to use a different jdk + set_java_home ${JDK_VERSION} ccm start -v --no-wait --skip-wait-other-notice || true sleep 30 ccm status - + set_java_home 11 case "${STORAGE_TYPE}" in "") echo "ERROR: Environment variable STORAGE_TYPE is unspecified." @@ -111,11 +128,13 @@ case "${TEST_TYPE}" in ;; "upgrade") mvn --version -B + # dependending on the version of cassandra, we may need to use a different jdk + set_java_home ${JDK_VERSION} ccm start -v --no-wait --skip-wait-other-notice || true sleep 30 ccm status - ccm node1 cqlsh -e "DROP KEYSPACE reaper_db" || true + set_java_home 11 mvn package -B -DskipTests -Pintegration-upgrade-tests MAVEN_OPTS="-Xmx384m" mvn -B surefire:test -Dtest=ReaperCassandraIT ;; diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ab6147793..beba51524 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -47,7 +47,7 @@ jobs: uses: actions/setup-java@v2 with: distribution: 'adopt' # See 'Supported distributions' for available options - java-version: '8.0.192' + java-version: '11' - name: Setup Node uses: actions/setup-node@v1 @@ -96,7 +96,7 @@ jobs: uses: actions/setup-java@v2 with: distribution: 'adopt' # See 'Supported distributions' for available options - java-version: '8.0.192' + java-version: '11' - name: Setup Node uses: actions/setup-node@v1 @@ -129,33 +129,41 @@ jobs: continue-on-error: ${{ matrix.experimental }} strategy: matrix: - cassandra-version: [1.2.19, 2.0.17, 2.1.22, 2.2.19, 3.0.25, 3.11.11, 4.0.0, 'github:apache/trunk'] + cassandra-version: ["binary:1.2.19", "binary:2.0.17", 'binary:2.1.22', 'binary:2.2.19', 'binary:3.0.25', 'binary:3.11.11', 'binary:4.0.1', 'github:apache/trunk'] storage-type: [local] test-type: [ccm] include: # don't run against the following C* versions when using cassandra storage type - - cassandra-version: 1.2.19 + - cassandra-version: "binary:1.2.19" cucumber-options: '--tags ~@cassandra_2_1_onwards --tags ~@cassandra_4_0_onwards --tags ~@cassandra_3_11_onwards' experimental: false - - cassandra-version: 2.0.17 + jdk-version: '8' + - cassandra-version: "binary:2.0.17" cucumber-options: '--tags ~@cassandra_2_1_onwards --tags ~@cassandra_4_0_onwards --tags ~@cassandra_3_11_onwards' experimental: false - - cassandra-version: 2.1.22 + jdk-version: '8' + - cassandra-version: 'binary:2.1.22' cucumber-options: '--tags ~@cassandra_4_0_onwards --tags ~@cassandra_3_11_onwards' experimental: false - - cassandra-version: 2.2.19 + jdk-version: '8' + - cassandra-version: 'binary:2.2.19' cucumber-options: '--tags ~@cassandra_4_0_onwards --tags ~@cassandra_3_11_onwards' experimental: false - - cassandra-version: 3.0.25 + jdk-version: '8' + - cassandra-version: 'binary:3.0.25' cucumber-options: '--tags ~@cassandra_4_0_onwards --tags ~@cassandra_3_11_onwards' experimental: false - - cassandra-version: 3.11.11 + jdk-version: '8' + - cassandra-version: 'binary:3.11.11' cucumber-options: '--tags ~@cassandra_4_0_onwards' experimental: false - - cassandra-version: 4.0.0 + jdk-version: '8' + - cassandra-version: 'binary:4.0.1' experimental: false + jdk-version: '11' - cassandra-version: 'github:apache/trunk' experimental: true + jdk-version: '11' steps: - name: Checkout uses: actions/checkout@v2 @@ -173,7 +181,7 @@ jobs: uses: actions/setup-java@v2 with: distribution: 'adopt' # See 'Supported distributions' for available options - java-version: '8.0.192' + java-version: '11' - name: Setup Node uses: actions/setup-node@v1 @@ -200,6 +208,7 @@ jobs: TEST_TYPE: ${{ matrix.test-type }} CASSANDRA_VERSION: ${{ matrix.cassandra-version }} STORAGE_TYPE: ${{ matrix.storage-type }} + JDK_VERSION: ${{ matrix.jdk-version }} - name: Run Tests run: ./.github/scripts/run-tests.sh @@ -208,6 +217,7 @@ jobs: CASSANDRA_VERSION: ${{ matrix.cassandra-version }} STORAGE_TYPE: ${{ matrix.storage-type }} CUCUMBER_OPTIONS: ${{ matrix.cucumber-options }} + JDK_VERSION: ${{ matrix.jdk-version }} - uses: codecov/codecov-action@v1 @@ -223,26 +233,32 @@ jobs: continue-on-error: ${{ matrix.experimental }} strategy: matrix: - cassandra-version: [2.1.22, 2.2.19, 3.0.25, 3.11.11, 4.0.0, 'github:apache/trunk'] + cassandra-version: ['binary:2.1.22', 'binary:2.2.19', 'binary:3.0.25', 'binary:3.11.11', 'binary:4.0.1', 'github:apache/trunk'] storage-type: [cassandra] test-type: [ccm] include: - - cassandra-version: 2.1.22 + - cassandra-version: 'binary:2.1.22' cucumber-options: '--tags ~@cassandra_4_0_onwards --tags ~@cassandra_3_11_onwards' experimental: false - - cassandra-version: 2.2.19 + jdk-version: '8' + - cassandra-version: 'binary:2.2.19' cucumber-options: '--tags ~@cassandra_4_0_onwards --tags ~@cassandra_3_11_onwards' experimental: false - - cassandra-version: 3.0.25 + jdk-version: '8' + - cassandra-version: 'binary:3.0.25' cucumber-options: '--tags ~@cassandra_4_0_onwards --tags ~@cassandra_3_11_onwards' experimental: false - - cassandra-version: 3.11.11 + jdk-version: '8' + - cassandra-version: 'binary:3.11.11' cucumber-options: '--tags ~@cassandra_4_0_onwards' experimental: false - - cassandra-version: 4.0.0 + jdk-version: '8' + - cassandra-version: 'binary:4.0.1' experimental: false + jdk-version: '11' - cassandra-version: 'github:apache/trunk' experimental: true + jdk-version: '11' steps: - name: Checkout uses: actions/checkout@v2 @@ -260,7 +276,7 @@ jobs: uses: actions/setup-java@v2 with: distribution: 'adopt' # See 'Supported distributions' for available options - java-version: '8.0.192' + java-version: '11' - name: Setup Node uses: actions/setup-node@v1 @@ -287,6 +303,7 @@ jobs: TEST_TYPE: ${{ matrix.test-type }} CASSANDRA_VERSION: ${{ matrix.cassandra-version }} STORAGE_TYPE: ${{ matrix.storage-type }} + JDK_VERSION: ${{ matrix.jdk-version }} - name: Run Tests run: ./.github/scripts/run-tests.sh @@ -295,6 +312,7 @@ jobs: CASSANDRA_VERSION: ${{ matrix.cassandra-version }} STORAGE_TYPE: ${{ matrix.storage-type }} CUCUMBER_OPTIONS: ${{ matrix.cucumber-options }} + JDK_VERSION: ${{ matrix.jdk-version }} - uses: codecov/codecov-action@v1 @@ -332,7 +350,7 @@ jobs: uses: actions/setup-java@v2 with: distribution: 'adopt' # See 'Supported distributions' for available options - java-version: '8.0.192' + java-version: '11' - name: Setup Node uses: actions/setup-node@v1 @@ -359,6 +377,7 @@ jobs: TEST_TYPE: ${{ matrix.test-type }} ELASSANDRA_VERSION: ${{ matrix.elassandra-version }} STORAGE_TYPE: ${{ matrix.storage-type }} + JDK_VERSION: ${{ matrix.jdk-version }} - name: Run Tests run: | @@ -370,6 +389,7 @@ jobs: CUCUMBER_OPTIONS: ${{ matrix.cucumber-options }} GRIM_MAX: ${{ matrix.grim-max }} GRIM_MIN: ${{ matrix.grim-min }} + JDK_VERSION: ${{ matrix.jdk-version }} - uses: codecov/codecov-action@v1 @@ -380,31 +400,37 @@ jobs: continue-on-error: ${{ matrix.experimental }} strategy: matrix: - cassandra-version: [2.1.22, 2.2.19, 3.0.25, 3.11.11, 4.0.0, 'github:apache/trunk'] + cassandra-version: ['binary:2.1.22', 'binary:2.2.19', 'binary:3.0.25', 'binary:3.11.11', 'binary:4.0.1', 'github:apache/trunk'] storage-type: [cassandra] test-type: [sidecar] grim-max: [1] grim-min: [1] # all versions but trunk have the same cucumber options, but we can't declare that more effectively (yet) include: - - cassandra-version: 2.1.22 + - cassandra-version: 'binary:2.1.22' cucumber-options: '--tags ~@cassandra_4_0_onwards --tags @sidecar --tags ~@cassandra_3_11_onwards' experimental: false - - cassandra-version: 2.2.19 + jdk-version: '8' + - cassandra-version: 'binary:2.2.19' cucumber-options: '--tags ~@cassandra_4_0_onwards --tags @sidecar --tags ~@cassandra_3_11_onwards' experimental: false - - cassandra-version: 3.0.25 + jdk-version: '8' + - cassandra-version: 'binary:3.0.25' cucumber-options: '--tags ~@cassandra_4_0_onwards --tags @sidecar --tags ~@cassandra_3_11_onwards' experimental: false - - cassandra-version: 3.11.11 + jdk-version: '8' + - cassandra-version: 'binary:3.11.11' cucumber-options: '--tags ~@cassandra_4_0_onwards --tags @sidecar' experimental: false - - cassandra-version: 4.0.0 + jdk-version: '8' + - cassandra-version: 'binary:4.0.1' cucumber-options: '--tags @sidecar' experimental: false + jdk-version: '11' - cassandra-version: 'github:apache/trunk' cucumber-options: '--tags @sidecar' experimental: true + jdk-version: '11' steps: - name: Checkout uses: actions/checkout@v2 @@ -421,7 +447,7 @@ jobs: uses: actions/setup-java@v2 with: distribution: 'adopt' # See 'Supported distributions' for available options - java-version: '8.0.192' + java-version: '11' - name: Setup Node uses: actions/setup-node@v1 @@ -448,6 +474,7 @@ jobs: TEST_TYPE: ${{ matrix.test-type }} CASSANDRA_VERSION: ${{ matrix.cassandra-version }} STORAGE_TYPE: ${{ matrix.storage-type }} + JDK_VERSION: ${{ matrix.jdk-version }} - name: Run Tests run: ./.github/scripts/run-tests.sh || ./.github/scripts/run-tests.sh @@ -458,6 +485,7 @@ jobs: GRIM_MAX: ${{ matrix.grim-max }} GRIM_MIN: ${{ matrix.grim-min }} CUCUMBER_OPTIONS: ${{ matrix.cucumber-options }} + JDK_VERSION: ${{ matrix.jdk-version }} - uses: codecov/codecov-action@v1 @@ -468,14 +496,14 @@ jobs: continue-on-error: ${{ matrix.experimental }} strategy: matrix: - cassandra-version: [4.0.0, 'github:apache/trunk'] + cassandra-version: ['binary:4.0.1', 'github:apache/trunk'] storage-type: [cassandra] test-type: [each] grim-max: [1] grim-min: [1] # Reduced scope to shorten the integration test times include: - - cassandra-version: 4.0.0 + - cassandra-version: 'binary:4.0.1' cucumber-options: '--tags @sidecar' experimental: false - cassandra-version: 'github:apache/trunk' @@ -497,7 +525,7 @@ jobs: uses: actions/setup-java@v2 with: distribution: 'adopt' # See 'Supported distributions' for available options - java-version: '8.0.192' + java-version: '11' - name: Setup Node uses: actions/setup-node@v1 @@ -524,6 +552,7 @@ jobs: TEST_TYPE: ${{ matrix.test-type }} CASSANDRA_VERSION: ${{ matrix.cassandra-version }} STORAGE_TYPE: ${{ matrix.storage-type }} + JDK_VERSION: ${{ matrix.jdk-version }} - name: Run Tests run: ./.github/scripts/run-tests.sh || ./.github/scripts/run-tests.sh @@ -534,6 +563,7 @@ jobs: GRIM_MAX: ${{ matrix.grim-max }} GRIM_MIN: ${{ matrix.grim-min }} CUCUMBER_OPTIONS: ${{ matrix.cucumber-options }} + JDK_VERSION: ${{ matrix.jdk-version }} - uses: codecov/codecov-action@v1 @@ -544,29 +574,35 @@ jobs: continue-on-error: ${{ matrix.experimental }} strategy: matrix: - cassandra-version: [2.1.22, 2.2.19, 3.0.25, 3.11.11, 4.0.0, 'github:apache/trunk'] + cassandra-version: ['binary:2.1.22', 'binary:2.2.19', 'binary:3.0.25', 'binary:3.11.11', 'binary:4.0.1', 'github:apache/trunk'] storage-type: [cassandra] test-type: [ccm] grim-max: [2] grim-min: [2] include: # all versions but trunk need to exclude trunk tests - - cassandra-version: 2.1.22 + - cassandra-version: 'binary:2.1.22' cucumber-options: '--tags ~@cassandra_4_0_onwards --tags ~@cassandra_3_11_onwards' experimental: false - - cassandra-version: 2.2.19 + jdk-version: '8' + - cassandra-version: 'binary:2.2.19' cucumber-options: '--tags ~@cassandra_4_0_onwards --tags ~@cassandra_3_11_onwards' experimental: false - - cassandra-version: 3.0.25 + jdk-version: '8' + - cassandra-version: 'binary:3.0.25' cucumber-options: '--tags ~@cassandra_4_0_onwards --tags ~@cassandra_3_11_onwards' experimental: false - - cassandra-version: 3.11.11 + jdk-version: '8' + - cassandra-version: 'binary:3.11.11' cucumber-options: '--tags ~@cassandra_4_0_onwards' experimental: false - - cassandra-version: 4.0.0 + jdk-version: '8' + - cassandra-version: 'binary:4.0.1' experimental: false + jdk-version: '11' - cassandra-version: 'github:apache/trunk' experimental: true + jdk-version: '11' steps: - name: Checkout uses: actions/checkout@v2 @@ -584,7 +620,7 @@ jobs: uses: actions/setup-java@v2 with: distribution: 'adopt' # See 'Supported distributions' for available options - java-version: '8.0.192' + java-version: '11' - name: Setup Node uses: actions/setup-node@v1 @@ -611,6 +647,7 @@ jobs: TEST_TYPE: ${{ matrix.test-type }} CASSANDRA_VERSION: ${{ matrix.cassandra-version }} STORAGE_TYPE: ${{ matrix.storage-type }} + JDK_VERSION: ${{ matrix.jdk-version }} - name: Run Tests run: ./.github/scripts/run-tests.sh || ./.github/scripts/run-tests.sh @@ -621,6 +658,7 @@ jobs: CUCUMBER_OPTIONS: ${{ matrix.cucumber-options }} GRIM_MAX: ${{ matrix.grim-max }} GRIM_MIN: ${{ matrix.grim-min }} + JDK_VERSION: ${{ matrix.jdk-version }} - uses: codecov/codecov-action@v1 @@ -632,7 +670,7 @@ jobs: continue-on-error: ${{ matrix.experimental }} strategy: matrix: - cassandra-version: [4.0.0, 'github:apache/trunk'] + cassandra-version: ['binary:4.0.1', 'github:apache/trunk'] storage-type: [cassandra] test-type: [ccm] grim-max: [4] @@ -640,10 +678,12 @@ jobs: cucumber-options: ['--tags ~@diag_event_subscriptions'] include: # all versions but trunk need to exclude trunk tests - - cassandra-version: 4.0.0 + - cassandra-version: 'binary:4.0.1' experimental: true + jdk-version: '11' - cassandra-version: 'github:apache/trunk' experimental: true + jdk-version: '11' steps: - name: Checkout uses: actions/checkout@v2 @@ -661,7 +701,7 @@ jobs: uses: actions/setup-java@v2 with: distribution: 'adopt' # See 'Supported distributions' for available options - java-version: '8.0.192' + java-version: '11' - name: Setup Node uses: actions/setup-node@v1 @@ -688,6 +728,7 @@ jobs: TEST_TYPE: ${{ matrix.test-type }} CASSANDRA_VERSION: ${{ matrix.cassandra-version }} STORAGE_TYPE: ${{ matrix.storage-type }} + JDK_VERSION: ${{ matrix.jdk-version }} - name: Run Tests run: | @@ -699,6 +740,7 @@ jobs: CUCUMBER_OPTIONS: ${{ matrix.cucumber-options }} GRIM_MAX: ${{ matrix.grim-max }} GRIM_MIN: ${{ matrix.grim-min }} + JDK_VERSION: ${{ matrix.jdk-version }} - uses: codecov/codecov-action@v1 @@ -731,7 +773,7 @@ jobs: uses: actions/setup-java@v2 with: distribution: 'adopt' # See 'Supported distributions' for available options - java-version: '8.0.192' + java-version: '11' - name: Setup Node uses: actions/setup-node@v1 @@ -758,6 +800,7 @@ jobs: TEST_TYPE: ${{ matrix.test-type }} ELASSANDRA_VERSION: ${{ matrix.elassandra-version }} STORAGE_TYPE: ${{ matrix.storage-type }} + JDK_VERSION: ${{ matrix.jdk-version }} - name: Run Tests run: | @@ -769,6 +812,7 @@ jobs: CUCUMBER_OPTIONS: ${{ matrix.cucumber-options }} GRIM_MAX: ${{ matrix.grim-max }} GRIM_MIN: ${{ matrix.grim-min }} + JDK_VERSION: ${{ matrix.jdk-version }} - uses: codecov/codecov-action@v1 @@ -793,7 +837,7 @@ jobs: uses: actions/setup-java@v2 with: distribution: 'adopt' # See 'Supported distributions' for available options - java-version: '8.0.192' + java-version: '11' - name: Setup Node uses: actions/setup-node@v1 diff --git a/pom.xml b/pom.xml index 6286602b6..b18968a25 100644 --- a/pom.xml +++ b/pom.xml @@ -332,11 +332,10 @@ UTF-8 - 1.8 - - 1.8.0-151 + 8 + 1.8 - 3.3.8 + 3.6.3 - - org.codehaus.mojo - animal-sniffer-maven-plugin - - - org.codehaus.mojo.signature - java18 - 1.0 - - - - - - check - - - org.apache.maven.plugins @@ -518,7 +512,6 @@ checkstyle.xml true true - false src/checkstyle/java.header src/checkstyle/suppressions.xml true @@ -660,7 +653,7 @@ org.apache.maven.plugins maven-surefire-plugin - 2.18.1 + 2.22.2 true @@ -671,45 +664,6 @@ - - org.apache.maven.plugins - maven-dependency-plugin - - - generate-test-resources - - copy - - - - - - io.dropwizard - dropwizard-testing - ${dropwizard.version} - dropwizard-testing.jar - - - io.cassandrareaper - cassandra-reaper - 1.2.2 - - - io.cassandrareaper - cassandra-reaper - 1.3.0 - - - io.cassandrareaper - cassandra-reaper - 1.4.1 - - - ${project.build.directory}/test-jars - - - - org.jacoco jacoco-maven-plugin diff --git a/src/server/src/main/docker/Dockerfile b/src/server/src/main/docker/Dockerfile index a245f6863..08d3f4ddd 100644 --- a/src/server/src/main/docker/Dockerfile +++ b/src/server/src/main/docker/Dockerfile @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM adoptopenjdk/openjdk8:alpine +FROM adoptopenjdk/openjdk11:alpine ARG SHADED_JAR diff --git a/src/server/src/main/java/io/cassandrareaper/ReaperApplication.java b/src/server/src/main/java/io/cassandrareaper/ReaperApplication.java index 078d28132..efc722bc3 100644 --- a/src/server/src/main/java/io/cassandrareaper/ReaperApplication.java +++ b/src/server/src/main/java/io/cassandrareaper/ReaperApplication.java @@ -86,7 +86,6 @@ import org.secnod.dropwizard.shiro.ShiroConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import sun.misc.Signal; public final class ReaperApplication extends Application { @@ -155,7 +154,6 @@ public void run(ReaperApplicationConfiguration config, Environment environment) DateTimeZone.setDefault(DateTimeZone.UTC); checkConfiguration(config); context.config = config; - addSignalHandlers(); // SIGHUP, etc. context.metricRegistry = environment.metrics(); CollectorRegistry.defaultRegistry.register(new DropwizardExports(environment.metrics())); @@ -440,21 +438,6 @@ private void checkConfiguration(ReaperApplicationConfiguration config) { LOG.debug("jmxPorts: {}", config.getJmxPorts()); } - void reloadConfiguration() { - // TODO: reload configuration, but how? - LOG.warn("SIGHUP signal dropped, missing implementation for configuration reload"); - } - - private void addSignalHandlers() { - if (!System.getProperty("os.name").toLowerCase().contains("win")) { - LOG.debug("adding signal handler for SIGHUP"); - Signal.handle(new Signal("HUP"), signal -> { - LOG.info("received SIGHUP signal: {}", signal); - reloadConfiguration(); - }); - } - } - private void initializeJmxSeedsForAllClusters() { LOG.info("Initializing JMX seed list for all clusters..."); try (JmxConnectionsInitializer jmxConnectionsIntializer = JmxConnectionsInitializer.create(context); diff --git a/src/server/src/main/java/io/cassandrareaper/crypto/SymmetricCryptograph.java b/src/server/src/main/java/io/cassandrareaper/crypto/SymmetricCryptograph.java index d5eafe461..0f70bf7d4 100644 --- a/src/server/src/main/java/io/cassandrareaper/crypto/SymmetricCryptograph.java +++ b/src/server/src/main/java/io/cassandrareaper/crypto/SymmetricCryptograph.java @@ -32,7 +32,6 @@ import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.SecretKeySpec; -import javax.xml.bind.DatatypeConverter; import com.google.common.base.Preconditions; import org.apache.commons.lang3.StringUtils; @@ -49,6 +48,7 @@ public final class SymmetricCryptograph implements Cryptograph { private static final String DEFAULT_PROPERTY_KEY_SECRET = "CASSANDRA_REAPER_PROPERTY_KEY_SECRET"; private static final int DEFAULT_ITERATION_COUNT = 1024; private static final int DEFAULT_KEY_STRENGTH = 256; + private static final char[] HEX_CODE = "0123456789ABCDEF".toCharArray(); private final String algorithm; private final String cipher; @@ -132,7 +132,7 @@ private String encryptText(String key, String plainText) throws NoSuchAlgorithmE encipher.init(Cipher.ENCRYPT_MODE, secretKey, ivspec); byte[] encryptedBytes = encipher.doFinal(plainText.getBytes()); - return DatatypeConverter.printHexBinary(initVector) + DatatypeConverter.printHexBinary(encryptedBytes); + return printHexBinary(initVector) + printHexBinary(encryptedBytes); } private String decryptText(String key, String encryptedText) throws InvalidKeySpecException, NoSuchAlgorithmException, @@ -192,6 +192,21 @@ private byte[] decode(CharSequence chars) { } } + // migrated as is from JAXB as it's no longer part of Java 11 default install + public static String printHexBinary(byte[] data) { + StringBuilder builder = new StringBuilder(data.length * 2); + byte[] dataCopy = data; + int length = data.length; + + for (int i = 0; i < length; ++i) { + byte bd = dataCopy[i]; + builder.append(HEX_CODE[bd >> 4 & 15]); + builder.append(HEX_CODE[bd & 15]); + } + + return builder.toString(); + } + private byte[] subArray(byte[] array, int beginIndex, int endIndex) { int length = endIndex - beginIndex; byte[] subarray = new byte[length]; diff --git a/src/server/src/main/java/io/cassandrareaper/jmx/JmxProxyImpl.java b/src/server/src/main/java/io/cassandrareaper/jmx/JmxProxyImpl.java index 78463adf8..7b3c990f9 100644 --- a/src/server/src/main/java/io/cassandrareaper/jmx/JmxProxyImpl.java +++ b/src/server/src/main/java/io/cassandrareaper/jmx/JmxProxyImpl.java @@ -32,7 +32,6 @@ import java.net.MalformedURLException; import java.rmi.server.RMIClientSocketFactory; import java.rmi.server.RMISocketFactory; -import java.security.Security; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -227,7 +226,6 @@ private static JmxProxy connect( String[] creds = { jmxCredentials.get().getUsername(), jmxCredentials.get().getPassword() }; env.put(JMXConnector.CREDENTIALS, creds); LOG.debug("Use SSL with profile 'TLS SASL/PLAIN' with JMXMP"); - Security.addProvider(new com.sun.security.sasl.Provider()); env.put("jmx.remote.profiles", "TLS SASL/PLAIN"); env.put("jmx.remote.sasl.callback.handler", new UserPasswordCallbackHandler(jmxCredentials.get().getUsername(), jmxCredentials.get().getPassword())); diff --git a/src/server/src/main/java/io/cassandrareaper/resources/auth/ShiroJwtProvider.java b/src/server/src/main/java/io/cassandrareaper/resources/auth/ShiroJwtProvider.java index e4e0d6ca9..b22b475a2 100644 --- a/src/server/src/main/java/io/cassandrareaper/resources/auth/ShiroJwtProvider.java +++ b/src/server/src/main/java/io/cassandrareaper/resources/auth/ShiroJwtProvider.java @@ -67,6 +67,7 @@ private static Key getSigningKey(AppContext cxt) { } else { key = Base64.getDecoder().decode(txt); } - return new SecretKeySpec(key, SIG_ALG.getJcaName()); + + return new SecretKeySpec(Base64.getDecoder().decode(txt), SIG_ALG.getJcaName()); } } diff --git a/src/server/src/test/java/io/cassandrareaper/AssertionTest.java b/src/server/src/test/java/io/cassandrareaper/AssertionTest.java index f01eb1fc4..b71c857c1 100644 --- a/src/server/src/test/java/io/cassandrareaper/AssertionTest.java +++ b/src/server/src/test/java/io/cassandrareaper/AssertionTest.java @@ -17,9 +17,6 @@ package io.cassandrareaper; -import java.nio.file.Paths; - -import org.assertj.core.api.Assertions; import org.junit.Test; public final class AssertionTest { @@ -36,23 +33,4 @@ public void test_assertions_enabled() { throw new AssertionError("assertions are not enabled"); } } - - @Test - public void test_versions_downloaded() { - int tested = 0; - String[] versions = System.getProperty("cucumber.versions-to-test.original").split("\n"); - for (String line : versions) { - if (!(line.contains("Examples") || line.contains("version"))) { - String version = line.replace("|", "").trim(); - if (!version.isEmpty()) { - Assertions - .assertThat(Paths.get("test-jars", String.format("cassandra-reaper-%s.jar", version)).toFile()) - .exists(); - ++tested; - } - } - } - Assertions.assertThat(tested).isGreaterThan(0); - } - }