diff --git a/atlasdb-cassandra/build.gradle b/atlasdb-cassandra/build.gradle index 1a15ff6ca22..32db8f316d9 100644 --- a/atlasdb-cassandra/build.gradle +++ b/atlasdb-cassandra/build.gradle @@ -17,6 +17,7 @@ dependencies { explicitShadow project(":commons-api") explicitShadow project(':timestamp-impl') explicitShadow project(":atlasdb-impl-shared") + explicitShadow 'com.palantir.nylon:nylon-threads' explicitShadow ('com.palantir.cassandra:cassandra-thrift:' + libVersions.palantir_cassandra_thrift) { exclude group: 'org.apache.httpcomponents' diff --git a/atlasdb-cassandra/src/main/java/com/palantir/atlasdb/keyvalue/cassandra/CassandraClientPoolingContainer.java b/atlasdb-cassandra/src/main/java/com/palantir/atlasdb/keyvalue/cassandra/CassandraClientPoolingContainer.java index 573b83cc055..377bfcf9910 100644 --- a/atlasdb-cassandra/src/main/java/com/palantir/atlasdb/keyvalue/cassandra/CassandraClientPoolingContainer.java +++ b/atlasdb-cassandra/src/main/java/com/palantir/atlasdb/keyvalue/cassandra/CassandraClientPoolingContainer.java @@ -24,12 +24,12 @@ import com.palantir.atlasdb.keyvalue.cassandra.pool.CassandraClientPoolMetrics; import com.palantir.atlasdb.util.MetricsManager; import com.palantir.common.base.FunctionCheckedException; -import com.palantir.common.concurrent.ThreadNames; import com.palantir.common.pooling.PoolingContainer; import com.palantir.logsafe.SafeArg; import com.palantir.logsafe.UnsafeArg; import com.palantir.logsafe.logger.SafeLogger; import com.palantir.logsafe.logger.SafeLoggerFactory; +import com.palantir.nylon.threads.ThreadNames; import com.palantir.util.TimedRunner; import com.palantir.util.TimedRunner.TaskContext; import java.lang.management.ManagementFactory; diff --git a/atlasdb-client/build.gradle b/atlasdb-client/build.gradle index 39f22486f45..dcd4202857b 100644 --- a/atlasdb-client/build.gradle +++ b/atlasdb-client/build.gradle @@ -48,6 +48,7 @@ dependencies { api group: "jakarta.annotation", name: "jakarta.annotation-api" api group: "org.slf4j", name: "slf4j-api" + implementation "com.palantir.nylon:nylon-threads" implementation group: "org.xerial.snappy", name: "snappy-java", version: libVersions.snappy implementation group: "com.github.ben-manes.caffeine", name: "caffeine" implementation group: "com.googlecode.protobuf-java-format", name: "protobuf-java-format", version: "1.2" diff --git a/atlasdb-client/src/main/java/com/palantir/atlasdb/util/AnnotatedCallable.java b/atlasdb-client/src/main/java/com/palantir/atlasdb/util/AnnotatedCallable.java index 41fb3352483..af8acfae935 100644 --- a/atlasdb-client/src/main/java/com/palantir/atlasdb/util/AnnotatedCallable.java +++ b/atlasdb-client/src/main/java/com/palantir/atlasdb/util/AnnotatedCallable.java @@ -15,7 +15,7 @@ */ package com.palantir.atlasdb.util; -import com.palantir.common.concurrent.ThreadNames; +import com.palantir.nylon.threads.ThreadNames; import java.util.concurrent.Callable; /** diff --git a/atlasdb-client/src/main/java/com/palantir/atlasdb/util/AnnotatedRunnable.java b/atlasdb-client/src/main/java/com/palantir/atlasdb/util/AnnotatedRunnable.java index b333a15016f..4cf1520ad4a 100644 --- a/atlasdb-client/src/main/java/com/palantir/atlasdb/util/AnnotatedRunnable.java +++ b/atlasdb-client/src/main/java/com/palantir/atlasdb/util/AnnotatedRunnable.java @@ -15,7 +15,7 @@ */ package com.palantir.atlasdb.util; -import com.palantir.common.concurrent.ThreadNames; +import com.palantir.nylon.threads.ThreadNames; /** * Whenever this runnable is run, for the duration of the call we will have a new thread name. diff --git a/atlasdb-dbkvs/build.gradle b/atlasdb-dbkvs/build.gradle index 3dee5177c9f..ba9b570973b 100644 --- a/atlasdb-dbkvs/build.gradle +++ b/atlasdb-dbkvs/build.gradle @@ -11,6 +11,7 @@ dependencies { compile project(':commons-api') implementation group: 'com.palantir.conjure.java.api', name: 'service-config' + implementation "com.palantir.nylon:nylon-threads" implementation 'com.fasterxml.jackson.core:jackson-annotations' implementation 'com.fasterxml.jackson.core:jackson-databind' implementation 'com.google.auto.service:auto-service-annotations' diff --git a/atlasdb-dbkvs/src/main/java/com/palantir/atlasdb/keyvalue/dbkvs/impl/DbKvs.java b/atlasdb-dbkvs/src/main/java/com/palantir/atlasdb/keyvalue/dbkvs/impl/DbKvs.java index 927923278e7..0504993e773 100644 --- a/atlasdb-dbkvs/src/main/java/com/palantir/atlasdb/keyvalue/dbkvs/impl/DbKvs.java +++ b/atlasdb-dbkvs/src/main/java/com/palantir/atlasdb/keyvalue/dbkvs/impl/DbKvs.java @@ -92,7 +92,6 @@ import com.palantir.common.base.Throwables; import com.palantir.common.collect.Maps2; import com.palantir.common.concurrent.PTExecutors; -import com.palantir.common.concurrent.ThreadNames; import com.palantir.exception.PalantirSqlException; import com.palantir.logsafe.Preconditions; import com.palantir.logsafe.SafeArg; @@ -102,6 +101,7 @@ import com.palantir.nexus.db.sql.AgnosticResultRow; import com.palantir.nexus.db.sql.AgnosticResultSet; import com.palantir.nexus.db.sql.SqlConnection; +import com.palantir.nylon.threads.ThreadNames; import com.palantir.util.crypto.Sha256Hash; import com.palantir.util.paging.AbstractPagingIterable; import com.palantir.util.paging.SimpleTokenBackedResultsPage; diff --git a/changelog/@unreleased/pr-5909.v2.yml b/changelog/@unreleased/pr-5909.v2.yml new file mode 100644 index 00000000000..78fbbaea6f5 --- /dev/null +++ b/changelog/@unreleased/pr-5909.v2.yml @@ -0,0 +1,5 @@ +type: improvement +improvement: + description: Replace thread-sharing infrastructure with `nylon-threads` + links: + - https://github.com/palantir/atlasdb/pull/5909 diff --git a/commons-api/build.gradle b/commons-api/build.gradle index 3f6eef5860a..8aed92c09ec 100644 --- a/commons-api/build.gradle +++ b/commons-api/build.gradle @@ -4,6 +4,7 @@ dependencies { compile project(':atlasdb-commons') compile project(':commons-annotations') + implementation "com.palantir.nylon:nylon-threads" implementation 'com.google.guava:guava' } diff --git a/commons-api/src/main/java/com/palantir/common/concurrent/ThreadNamingCallable.java b/commons-api/src/main/java/com/palantir/common/concurrent/ThreadNamingCallable.java index f58d2fbe714..9c2d52f9fed 100644 --- a/commons-api/src/main/java/com/palantir/common/concurrent/ThreadNamingCallable.java +++ b/commons-api/src/main/java/com/palantir/common/concurrent/ThreadNamingCallable.java @@ -15,6 +15,7 @@ */ package com.palantir.common.concurrent; +import com.palantir.nylon.threads.ThreadNames; import java.util.concurrent.Callable; /** diff --git a/commons-db/build.gradle b/commons-db/build.gradle index 55c888dfc23..2d12a273a35 100644 --- a/commons-db/build.gradle +++ b/commons-db/build.gradle @@ -6,6 +6,7 @@ dependencies { compile project(":commons-api") compile project(":commons-proxy") + implementation "com.palantir.nylon:nylon-threads" implementation group: 'commons-dbutils', name: 'commons-dbutils', version: libVersions.commons_dbutils implementation group: 'org.apache.commons', name: 'commons-lang3' implementation group: 'commons-io', name: 'commons-io' diff --git a/commons-db/src/main/java/com/palantir/nexus/db/sql/BasicSQL.java b/commons-db/src/main/java/com/palantir/nexus/db/sql/BasicSQL.java index 084b4c35fa7..047b550a8a9 100644 --- a/commons-db/src/main/java/com/palantir/nexus/db/sql/BasicSQL.java +++ b/commons-db/src/main/java/com/palantir/nexus/db/sql/BasicSQL.java @@ -19,7 +19,6 @@ import com.google.common.collect.ImmutableList; import com.palantir.common.base.Throwables; import com.palantir.common.concurrent.PTExecutors; -import com.palantir.common.concurrent.ThreadNames; import com.palantir.common.concurrent.ThreadNamingCallable; import com.palantir.db.oracle.JdbcHandler; import com.palantir.db.oracle.JdbcHandler.BlobHandler; @@ -32,6 +31,7 @@ import com.palantir.nexus.db.monitoring.timer.SqlTimer; import com.palantir.nexus.db.sql.BasicSQLString.FinalSQLString; import com.palantir.nexus.db.sql.monitoring.logger.SqlLoggers; +import com.palantir.nylon.threads.ThreadNames; import com.palantir.sql.Connections; import com.palantir.sql.PreparedStatements; import com.palantir.sql.ResultSets; diff --git a/commons-db/src/main/java/com/palantir/nexus/db/sql/BasicSQLUtils.java b/commons-db/src/main/java/com/palantir/nexus/db/sql/BasicSQLUtils.java index 602129a50f2..47182a1882b 100644 --- a/commons-db/src/main/java/com/palantir/nexus/db/sql/BasicSQLUtils.java +++ b/commons-db/src/main/java/com/palantir/nexus/db/sql/BasicSQLUtils.java @@ -15,7 +15,6 @@ */ package com.palantir.nexus.db.sql; -import com.palantir.common.concurrent.ThreadNames; import com.palantir.common.concurrent.ThreadNamingCallable; import com.palantir.exception.PalantirSqlException; import com.palantir.logsafe.Preconditions; @@ -26,6 +25,7 @@ import com.palantir.nexus.db.SQLConstants; import com.palantir.nexus.db.ThreadConfinedProxy; import com.palantir.nexus.db.sql.monitoring.logger.SqlLoggers; +import com.palantir.nylon.threads.ThreadNames; import java.io.ByteArrayInputStream; import java.sql.Connection; import java.sql.SQLException; diff --git a/commons-executors/build.gradle b/commons-executors/build.gradle index 32fd2c24bbb..2086033b282 100644 --- a/commons-executors/build.gradle +++ b/commons-executors/build.gradle @@ -4,6 +4,7 @@ libsDirName = file('build/artifacts') dependencies { compile project(":commons-executors-api") compile "com.palantir.tracing:tracing" + implementation "com.palantir.nylon:nylon-threads" implementation "com.palantir.tritium:tritium-metrics" implementation "org.jboss.threads:jboss-threads" diff --git a/commons-executors/src/main/java/com/palantir/common/concurrent/AtlasRenamingExecutorService.java b/commons-executors/src/main/java/com/palantir/common/concurrent/AtlasRenamingExecutorService.java deleted file mode 100644 index 226519f6acb..00000000000 --- a/commons-executors/src/main/java/com/palantir/common/concurrent/AtlasRenamingExecutorService.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * (c) Copyright 2020 Palantir Technologies Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.palantir.common.concurrent; - -import com.palantir.logsafe.Preconditions; -import java.util.List; -import java.util.concurrent.AbstractExecutorService; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicLong; -import java.util.function.Supplier; - -final class AtlasRenamingExecutorService extends AbstractExecutorService { - - private final ExecutorService delegate; - - private final Thread.UncaughtExceptionHandler handler; - - private final Supplier nameSupplier; - - AtlasRenamingExecutorService( - ExecutorService delegate, Thread.UncaughtExceptionHandler handler, Supplier nameSupplier) { - this.delegate = Preconditions.checkNotNull(delegate, "delegate"); - this.nameSupplier = Preconditions.checkNotNull(nameSupplier, "nameSupplier"); - this.handler = Preconditions.checkNotNull(handler, "handler"); - } - - @Override - public void shutdown() { - delegate.shutdown(); - } - - @Override - public List shutdownNow() { - return delegate.shutdownNow(); - } - - @Override - public boolean isShutdown() { - return delegate.isShutdown(); - } - - @Override - public boolean isTerminated() { - return delegate.isTerminated(); - } - - @Override - public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException { - return delegate.awaitTermination(timeout, unit); - } - - @Override - public void execute(Runnable command) { - delegate.execute(new RenamingRunnable(command)); - } - - @Override - public String toString() { - return "AtlasRenamingExecutorService{delegate=" + delegate + '}'; - } - - final class RenamingRunnable implements Runnable { - - private final Runnable command; - - RenamingRunnable(Runnable command) { - this.command = command; - } - - @Override - public void run() { - final Thread currentThread = Thread.currentThread(); - final String originalName = currentThread.getName(); - ThreadNames.setThreadName(currentThread, nameSupplier.get()); - try { - command.run(); - } catch (Throwable t) { - handler.uncaughtException(currentThread, t); - } finally { - ThreadNames.setThreadName(currentThread, originalName); - } - } - } - - static Supplier threadNameSupplier(String name) { - AtomicLong index = new AtomicLong(); - ThreadLocal threadNameCache = ThreadLocal.withInitial(() -> name + "-" + index.getAndIncrement()); - return threadNameCache::get; - } -} diff --git a/commons-executors/src/main/java/com/palantir/common/concurrent/PTExecutors.java b/commons-executors/src/main/java/com/palantir/common/concurrent/PTExecutors.java index d77725245b5..650a5a58fb5 100644 --- a/commons-executors/src/main/java/com/palantir/common/concurrent/PTExecutors.java +++ b/commons-executors/src/main/java/com/palantir/common/concurrent/PTExecutors.java @@ -26,6 +26,7 @@ import com.palantir.logsafe.exceptions.SafeIllegalStateException; import com.palantir.logsafe.logger.SafeLogger; import com.palantir.logsafe.logger.SafeLoggerFactory; +import com.palantir.nylon.threads.NylonExecutor; import com.palantir.tracing.Tracers; import com.palantir.tritium.metrics.MetricRegistries; import com.palantir.tritium.metrics.registry.SharedTaggedMetricRegistries; @@ -52,7 +53,6 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Supplier; import javax.annotation.Nullable; -import org.jboss.threads.ViewExecutor; /** * Please always use the static methods in this class instead of the ones in {@link @@ -175,14 +175,13 @@ public static ExecutorService newCachedThreadPoolWithMaxThreads(int maxThreads, .name(name) .executor(PTExecutors.wrap( name, - new AtlasRenamingExecutorService( - ViewExecutor.builder(SHARED_EXECUTOR.get()) - .setMaxSize(Math.min(Short.MAX_VALUE, maxThreads)) - .setQueueLimit(0) - .setUncaughtHandler(AtlasUncaughtExceptionHandler.INSTANCE) - .build(), - AtlasUncaughtExceptionHandler.INSTANCE, - AtlasRenamingExecutorService.threadNameSupplier(name)))) + NylonExecutor.builder() + .name(name) + .executor(SHARED_EXECUTOR.get()) + .maxThreads(maxThreads) + .queueSize(0) + .uncaughtExceptionHandler(AtlasUncaughtExceptionHandler.INSTANCE) + .build())) // Unhelpful for cached executors .reportQueuedDuration(false) .build(); @@ -269,14 +268,12 @@ public static ExecutorService newFixedThreadPool(int numThreads, String name) { SharedTaggedMetricRegistries.getSingleton(), PTExecutors.wrap( name, - new AtlasRenamingExecutorService( - ViewExecutor.builder(SHARED_EXECUTOR.get()) - .setMaxSize(Math.min(numThreads, Short.MAX_VALUE)) - .setQueueLimit(Integer.MAX_VALUE) - .setUncaughtHandler(AtlasUncaughtExceptionHandler.INSTANCE) - .build(), - AtlasUncaughtExceptionHandler.INSTANCE, - AtlasRenamingExecutorService.threadNameSupplier(name))), + NylonExecutor.builder() + .name(name) + .executor(SHARED_EXECUTOR.get()) + .maxThreads(numThreads) + .uncaughtExceptionHandler(AtlasUncaughtExceptionHandler.INSTANCE) + .build()), name); } diff --git a/commons-executors/src/main/java/com/palantir/common/concurrent/ThreadNames.java b/commons-executors/src/main/java/com/palantir/common/concurrent/ThreadNames.java deleted file mode 100644 index 50bef6a86dd..00000000000 --- a/commons-executors/src/main/java/com/palantir/common/concurrent/ThreadNames.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * (c) Copyright 2022 Palantir Technologies Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.palantir.common.concurrent; - -import com.palantir.logsafe.Preconditions; -import com.palantir.logsafe.exceptions.SafeIllegalStateException; -import java.lang.reflect.Field; -import java.security.PrivilegedAction; - -@SuppressWarnings({"UnnecessarilyQualified", "deprecation", "removal"}) // Internal classes should not be imported -public final class ThreadNames { - - private static final sun.misc.Unsafe unsafe = initUnsafe(); - - private static final long threadNameOffset; - - static { - try { - threadNameOffset = unsafe.objectFieldOffset(Thread.class.getDeclaredField("name")); - } catch (NoSuchFieldException e) { - throw new SafeIllegalStateException("Failed to find the Thread.name field", e); - } - } - - /** - * Sets the name of a thread without native overhead to rename the OS thread. - * Note that unlike {@link Thread#setName(String)} this implementation may not - * synchronize on the {@code thread} object. - * - * @see atlasdb#5796 - */ - public static void setThreadName(Thread thread, String name) { - Preconditions.checkNotNull(thread, "Thread is required"); - Preconditions.checkNotNull(name, "Thread name is required"); - unsafe.putObjectVolatile(thread, threadNameOffset, name); - } - - // prevent avoidable failures in spark/etc where security manager is used - @SuppressWarnings("removal") - private static sun.misc.Unsafe initUnsafe() { - return java.security.AccessController.doPrivileged((PrivilegedAction) () -> { - try { - Field field = sun.misc.Unsafe.class.getDeclaredField("theUnsafe"); - field.setAccessible(true); - return (sun.misc.Unsafe) field.get(null); - } catch (ReflectiveOperationException e) { - throw new SafeIllegalStateException("Failed to load Unsafe", e); - } - }); - } - - private ThreadNames() {} -} diff --git a/commons-executors/src/test/java/com/palantir/common/concurrent/ThreadNamesTest.java b/commons-executors/src/test/java/com/palantir/common/concurrent/ThreadNamesTest.java deleted file mode 100644 index 69160efd9e3..00000000000 --- a/commons-executors/src/test/java/com/palantir/common/concurrent/ThreadNamesTest.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * (c) Copyright 2022 Palantir Technologies Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.palantir.common.concurrent; - -import static org.assertj.core.api.Assertions.assertThat; - -import com.google.common.io.ByteStreams; -import java.io.File; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; -import java.util.UUID; -import org.junit.Test; - -public final class ThreadNamesTest { - - @Test - public void testRenameCurrentThread() { - Thread current = Thread.currentThread(); - String originalName = current.getName(); - try { - String newName = UUID.randomUUID().toString(); - ThreadNames.setThreadName(current, newName); - assertThat(current.getName()).isEqualTo(newName); - } finally { - current.setName(originalName); - } - assertThat(current.getName()).isEqualTo(originalName); - } - - @Test - public void testRenameAppearsInThreadDump() throws Exception { - Thread current = Thread.currentThread(); - String originalName = current.getName(); - try { - String newName = UUID.randomUUID().toString(); - ThreadNames.setThreadName(current, newName); - assertThat(current.getName()).isEqualTo(newName); - - // Use the current JVM, not 'jstack' from the PATH - String jstackPath = new File(System.getProperty("java.home"), "bin/jstack").getAbsolutePath(); - - Process process = Runtime.getRuntime().exec(new String[] { - jstackPath, Long.toString(ProcessHandle.current().pid()) - }); - String jstackOutput; - try (InputStream data = process.getInputStream()) { - jstackOutput = new String(ByteStreams.toByteArray(data), StandardCharsets.UTF_8); - } - int exitCode = process.waitFor(); - assertThat(exitCode).as("Jstack exited non-zero").isZero(); - assertThat(jstackOutput).contains('"' + newName + "\" "); - } finally { - current.setName(originalName); - } - assertThat(current.getName()).isEqualTo(originalName); - } -} diff --git a/lock-impl/build.gradle b/lock-impl/build.gradle index cdcff39fa4d..125dd6d40fe 100644 --- a/lock-impl/build.gradle +++ b/lock-impl/build.gradle @@ -4,6 +4,7 @@ dependencies { compile project(":lock-api") compile project(":atlasdb-commons") + implementation "com.palantir.nylon:nylon-threads" implementation group: 'com.palantir.safe-logging', name: 'safe-logging' implementation group: 'joda-time', name: 'joda-time' implementation group: 'org.yaml', name: 'snakeyaml' diff --git a/lock-impl/src/main/java/com/palantir/lock/impl/LockServiceImpl.java b/lock-impl/src/main/java/com/palantir/lock/impl/LockServiceImpl.java index 1aec9f34362..98292ede071 100644 --- a/lock-impl/src/main/java/com/palantir/lock/impl/LockServiceImpl.java +++ b/lock-impl/src/main/java/com/palantir/lock/impl/LockServiceImpl.java @@ -40,7 +40,6 @@ import com.google.common.collect.TreeMultiset; import com.palantir.common.base.Throwables; import com.palantir.common.concurrent.PTExecutors; -import com.palantir.common.concurrent.ThreadNames; import com.palantir.common.random.SecureRandomPool; import com.palantir.common.remoting.ServiceNotAvailableException; import com.palantir.common.streams.KeyedStream; @@ -80,6 +79,7 @@ import com.palantir.logsafe.exceptions.SafeIllegalStateException; import com.palantir.logsafe.logger.SafeLogger; import com.palantir.logsafe.logger.SafeLoggerFactory; +import com.palantir.nylon.threads.ThreadNames; import com.palantir.util.JMXUtils; import com.palantir.util.Ownable; import java.io.IOException; diff --git a/versions.lock b/versions.lock index d863d30ba80..e5f7c3fb8d0 100644 --- a/versions.lock +++ b/versions.lock @@ -37,16 +37,16 @@ com.github.tjake:crc32ex:0.1.1 (1 constraints: 900f6088) com.github.zafarkhaja:java-semver:0.9.0 (1 constraints: c315c0d2) com.google.auto:auto-common:1.2.1 (23 constraints: eaa876f2) com.google.auto.service:auto-service:1.0.1 (1 constraints: 0405f135) -com.google.auto.service:auto-service-annotations:1.0.1 (27 constraints: 14e83123) +com.google.auto.service:auto-service-annotations:1.0.1 (21 constraints: 45850478) com.google.code.findbugs:annotations:3.0.1 (2 constraints: 2417bf42) com.google.code.findbugs:findbugs-annotations:3.0.1 (1 constraints: 0605fb35) -com.google.code.findbugs:jsr305:3.0.2 (52 constraints: 516339be) +com.google.code.findbugs:jsr305:3.0.2 (46 constraints: 70002f8f) com.google.dagger:dagger:2.41 (4 constraints: a22dbb54) com.google.dagger:dagger-compiler:2.41 (1 constraints: db04fc30) com.google.dagger:dagger-producers:2.41 (2 constraints: 2e1a9d31) com.google.dagger:dagger-spi:2.41 (1 constraints: 1f0e6240) com.google.devtools.ksp:symbol-processing-api:1.5.30-1.0.0 (2 constraints: 0e16a766) -com.google.errorprone:error_prone_annotations:2.10.0 (41 constraints: 27cc0005) +com.google.errorprone:error_prone_annotations:2.10.0 (39 constraints: c2a7f7ab) com.google.errorprone:javac-shaded:9-dev-r4023-3 (1 constraints: 151671fc) com.google.googlejavaformat:google-java-format:1.5 (1 constraints: ee0d4132) com.google.guava:failureaccess:1.0.1 (31 constraints: 93258338) @@ -96,14 +96,15 @@ com.palantir.docker.compose:docker-compose-rule-events-api-objects:1.7.0 (1 cons com.palantir.docker.compose:docker-compose-rule-junit4:1.7.0 (2 constraints: 161af406) com.palantir.docker.proxy:docker-proxy-rule-core:1.1.1 (2 constraints: 0e1ab105) com.palantir.docker.proxy:docker-proxy-rule-junit4:1.1.1 (1 constraints: 0505f435) -com.palantir.goethe:goethe:0.6.0 (16 constraints: 99033061) +com.palantir.goethe:goethe:0.6.0 (10 constraints: a9a099a1) +com.palantir.nylon:nylon-threads:0.3.0 (1 constraints: 0505f435) com.palantir.refreshable:refreshable:2.1.0 (18 constraints: be5ef8c9) com.palantir.ri:resource-identifier:2.3.0 (17 constraints: dc59f5cf) -com.palantir.safe-logging:logger:1.21.0 (34 constraints: f95ffca4) -com.palantir.safe-logging:logger-slf4j:1.21.0 (27 constraints: abf999b4) -com.palantir.safe-logging:logger-spi:1.21.0 (28 constraints: f8093614) -com.palantir.safe-logging:preconditions:1.21.0 (37 constraints: 3394d002) -com.palantir.safe-logging:safe-logging:1.21.0 (39 constraints: 30b3b7a7) +com.palantir.safe-logging:logger:1.22.0 (35 constraints: 6d6e8580) +com.palantir.safe-logging:logger-slf4j:1.22.0 (27 constraints: acf973b5) +com.palantir.safe-logging:logger-spi:1.22.0 (28 constraints: fa091a16) +com.palantir.safe-logging:preconditions:1.22.0 (38 constraints: a8a2263c) +com.palantir.safe-logging:safe-logging:1.22.0 (40 constraints: a8c1ad0c) com.palantir.safethreadlocalrandom:safe-thread-local-random:0.1.0 (17 constraints: 9859455d) com.palantir.sls.versions:sls-versions:1.4.0 (1 constraints: 0705fc35) com.palantir.tokens:auth-tokens:3.11.0 (21 constraints: f8a10fa3) @@ -119,7 +120,7 @@ com.palantir.tritium:tritium-proxy:0.38.0 (1 constraints: 830e8359) com.palantir.tritium:tritium-registry:0.38.0 (21 constraints: ee91543a) com.palantir.tritium:tritium-slf4j:0.38.0 (2 constraints: bf13ad70) com.palantir.tritium:tritium-tracing:0.38.0 (1 constraints: 830e8359) -com.squareup:javapoet:1.13.0 (19 constraints: 682d3f70) +com.squareup:javapoet:1.13.0 (13 constraints: 58c909f7) com.thinkaurelius.thrift:thrift-server:0.3.7 (1 constraints: 980f6c88) com.zaxxer:HikariCP:5.0.1 (1 constraints: 4007b46f) commons-cli:commons-cli:1.4 (2 constraints: 741f07a6) @@ -284,7 +285,7 @@ org.immutables:value:2.9.0 (27 constraints: 5df25f4e) org.javassist:javassist:3.26.0-GA (11 constraints: d7f452e0) org.jboss.logging:jboss-logging:3.4.1.Final (19 constraints: 548fe337) org.jboss.marshalling:jboss-marshalling:1.4.11.Final (1 constraints: 51071a61) -org.jboss.threads:jboss-threads:3.4.2.Final (5 constraints: 2349c61b) +org.jboss.threads:jboss-threads:3.4.2.Final (6 constraints: 8359d756) org.jboss.xnio:xnio-api:3.8.6.Final (8 constraints: 9f854323) org.jboss.xnio:xnio-nio:3.8.6.Final (7 constraints: f178de24) org.jdbi:jdbi3-core:3.13.0 (2 constraints: 1010f9bf) @@ -314,7 +315,7 @@ org.rocksdb:rocksdbjni:6.28.2 (1 constraints: 4405653b) org.slf4j:jcl-over-slf4j:1.7.36 (3 constraints: 432fe5ed) org.slf4j:jul-to-slf4j:1.7.36 (1 constraints: b30e965e) org.slf4j:log4j-over-slf4j:1.7.36 (3 constraints: 432fe5ed) -org.slf4j:slf4j-api:1.7.36 (71 constraints: f38ca3b2) +org.slf4j:slf4j-api:1.7.36 (66 constraints: 0e391810) org.wildfly.client:wildfly-client-config:1.0.1.Final (3 constraints: 3b349bff) org.wildfly.common:wildfly-common:1.5.4.Final (5 constraints: 4e4b7bea) org.xerial:sqlite-jdbc:3.30.1 (1 constraints: 39053e3b) @@ -329,7 +330,7 @@ com.github.peterwippermann.junit4:parameterized-suite:1.1.0 (1 constraints: 0405 com.github.stefanbirkner:system-rules:1.19.0 (1 constraints: 3d05443b) com.github.tomakehurst:wiremock-standalone:2.27.2 (1 constraints: 3f054a3b) com.palantir.conjure.java.api:test-utils:2.23.0 (1 constraints: 39053c3b) -com.palantir.safe-logging:preconditions-assertj:1.21.0 (1 constraints: 3605303b) +com.palantir.safe-logging:preconditions-assertj:1.22.0 (1 constraints: 3605303b) com.palantir.tracing:tracing-test-utils:6.8.0 (4 constraints: 252f5c04) com.spotify.dataenum:dataenum:1.4.1 (1 constraints: e9105ac1) com.thoughtworks.qdox:qdox:1.12.1 (1 constraints: 6d11f7d9) diff --git a/versions.props b/versions.props index 147f8fa175a..56f8ad044d4 100644 --- a/versions.props +++ b/versions.props @@ -31,6 +31,7 @@ com.palantir.dialogue:* = 3.48.0 com.palantir.docker.compose:docker-compose-rule* = 1.7.0 com.palantir.docker.proxy:docker-proxy-rule* = 1.1.1 com.palantir.goethe:* = 0.6.0 +com.palantir.nylon:* = 0.3.0 com.palantir.refreshable:refreshable = 2.1.0 com.palantir.safe-logging:* = 1.21.0 com.palantir.sls.versions:* = 1.4.0