Closed schlosna closed 2 months ago
Type
Description
some of the example stack traces for threads blocked on class loading:
sun.security.provider.SHA5.lf_S(long, int):175
sun.security.provider.SHA5.lf_sigma1(long):193
sun.security.provider.SHA5.implCompress0(byte[], int):265
sun.security.provider.SHA5.implCompress(byte[], int):223
sun.security.provider.DigestBase.implCompressMultiBlock0(byte[], int, int):150
sun.security.provider.DigestBase.implCompressMultiBlock(byte[], int, int):144
sun.security.provider.DigestBase.engineUpdate(byte[], int, int):131
java.security.MessageDigest$Delegate.engineUpdate(byte[], int, int):658
java.security.MessageDigest.update(byte[], int, int):349
sun.security.rsa.RSASignature.engineUpdate(byte[], int, int):172
java.security.Signature$Delegate.engineUpdate(byte[], int, int):1413
java.security.Signature.update(byte[], int, int):902
java.security.Signature.update(byte[]):871
sun.security.pkcs.SignerInfo.verify(PKCS7, byte[]):492
sun.security.pkcs.PKCS7.verify(SignerInfo, byte[]):555
sun.security.pkcs.PKCS7.verify(byte[]):572
sun.security.util.SignatureFileVerifier.processImpl(Hashtable, List, String):313
sun.security.util.SignatureFileVerifier.process(Hashtable, List, String):289
java.util.jar.JarVerifier.processEntry(ManifestEntryVerifier):327
java.util.jar.JarVerifier.update(int, byte[], int, int, ManifestEntryVerifier):239
java.util.jar.JarFile.initializeVerifier():761
java.util.jar.JarFile.getInputStream(ZipEntry):849
sun.net.www.protocol.jar.JarURLConnection.getInputStream():187
java.util.ServiceLoader$LazyClassPathLookupIterator.parse(URL):1172
java.util.ServiceLoader$LazyClassPathLookupIterator.nextProviderClass():1213
java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService():1228
java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext():1273
java.util.ServiceLoader$2.hasNext():1309
java.util.ServiceLoader$3.hasNext():1393
org.eclipse.collections.api.factory.ServiceLoaderUtils.loadServiceClass(Class, ClassLoader):318
org.eclipse.collections.api.factory.ServiceLoaderUtils.loadServiceClass(Class):292
org.eclipse.collections.api.factory.primitive.LongLongMaps.<clinit>():30
com.palantir.atlasdb.transaction.impl.SerializableTransaction$PartitionedTimestamps.myCommittedTransaction():1118
sun.security.provider.SHA5.implCompress0(byte[], int):251
sun.security.provider.SHA5.implCompress(byte[], int):223
sun.security.provider.DigestBase.implCompressMultiBlock0(byte[], int, int):150
sun.security.provider.DigestBase.implCompressMultiBlock(byte[], int, int):144
sun.security.provider.DigestBase.engineUpdate(byte[], int, int):131
java.security.MessageDigest$Delegate.engineUpdate(byte[], int, int):658
java.security.MessageDigest.update(byte[], int, int):349
sun.security.rsa.RSASignature.engineUpdate(byte[], int, int):172
java.security.Signature$Delegate.engineUpdate(byte[], int, int):1413
java.security.Signature.update(byte[], int, int):902
java.security.Signature.update(byte[]):871
sun.security.pkcs.SignerInfo.verify(PKCS7, byte[]):492
sun.security.pkcs.PKCS7.verify(SignerInfo, byte[]):555
sun.security.pkcs.PKCS7.verify(byte[]):572
sun.security.util.SignatureFileVerifier.processImpl(Hashtable, List, String):313
sun.security.util.SignatureFileVerifier.process(Hashtable, List, String):289
java.util.jar.JarVerifier.processEntry(ManifestEntryVerifier):327
java.util.jar.JarVerifier.update(int, byte[], int, int, ManifestEntryVerifier):239
java.util.jar.JarFile.initializeVerifier():761
java.util.jar.JarFile.getInputStream(ZipEntry):849
sun.net.www.protocol.jar.JarURLConnection.getInputStream():187
java.util.ServiceLoader$LazyClassPathLookupIterator.parse(URL):1172
java.util.ServiceLoader$LazyClassPathLookupIterator.nextProviderClass():1213
java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService():1228
java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext():1273
java.util.ServiceLoader$2.hasNext():1309
java.util.ServiceLoader$3.hasNext():1393
org.eclipse.collections.api.factory.ServiceLoaderUtils.loadServiceClass(Class, ClassLoader):318
org.eclipse.collections.api.factory.ServiceLoaderUtils.loadServiceClass(Class):292
org.eclipse.collections.api.factory.primitive.LongLongMaps.<clinit>():30
com.palantir.atlasdb.transaction.impl.SerializableTransaction$PartitionedTimestamps.myCommittedTransaction():1118
com.palantir.atlasdb.transaction.impl.ImmutablePartitionedTimestamps.<init>(long, LongSet, LongSet, Long):51
com.palantir.atlasdb.transaction.impl.ImmutablePartitionedTimestamps$Builder.build():346
com.palantir.atlasdb.transaction.impl.SerializableTransaction$4.splitTransactionBeforeAndAfter(long, LongIterable):1033
com.palantir.atlasdb.transaction.impl.SerializableTransaction$4.getCommitTimestamps(TableReference, LongIterable, boolean, AsyncTransactionService):954
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getWithPostFilteringInternal(TableReference, Map, Collection, Function, AsyncKeyValueService, AsyncTransactionService):1714
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.lambda$getWithPostFilteringIterate$32(TableReference, Collection, Function, AsyncKeyValueService, AsyncTransactionService, Map):1593
com.palantir.atlasdb.transaction.impl.SnapshotTransaction$$Lambda$1489+0x00000001008e6858.863379376.apply(Object):-1
com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(AsyncFunction, Object):224
com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(Object, Object):211
com.google.common.util.concurrent.AbstractTransformFuture.run():124
com.google.common.util.concurrent.DirectExecutor.execute(Runnable):31
com.google.common.util.concurrent.ImmediateFuture.addListener(Runnable, Executor):49
com.google.common.util.concurrent.AbstractTransformFuture.create(ListenableFuture, AsyncFunction, Executor):44
com.google.common.util.concurrent.Futures.transformAsync(ListenableFuture, AsyncFunction, Executor):453
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getWithPostFilteringIterate(TableReference, Map, Collection, Function, AsyncKeyValueService, AsyncTransactionService):1587
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.lambda$getWithPostFilteringAsync$31(TableReference, Collection, Function, AsyncKeyValueService, AsyncTransactionService, Map):1570
com.palantir.atlasdb.transaction.impl.SnapshotTransaction$$Lambda$1488+0x00000001008e6630.814467083.apply(Object):-1
com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(AsyncFunction, Object):224
com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(Object, Object):211
com.google.common.util.concurrent.AbstractTransformFuture.run():124
com.google.common.util.concurrent.DirectExecutor.execute(Runnable):31
com.google.common.util.concurrent.ImmediateFuture.addListener(Runnable, Executor):49
com.google.common.util.concurrent.AbstractTransformFuture.create(ListenableFuture, AsyncFunction, Executor):44
com.google.common.util.concurrent.Futures.transformAsync(ListenableFuture, AsyncFunction, Executor):453
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getWithPostFilteringAsync(TableReference, Map, Function, AsyncKeyValueService, AsyncTransactionService):1568
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getWithPostFilteringSync(TableReference, Map, Function):1522
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.filterRowResults(TableReference, Map, ImmutableMap$Builder):884
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getRowsInternal(TableReference, Iterable, ColumnSelection):468
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.lambda$getRows$1(TableReference, ColumnSelection, Iterable):444
com.palantir.atlasdb.transaction.impl.SnapshotTransaction$$Lambda$1462+0x00000001008db120.1211247912.apply(Object):-1
com.palantir.atlasdb.keyvalue.api.cache.NoOpTransactionScopedCache.getRows(TableReference, Iterable, ColumnSelection, Function, Function):85
com.palantir.atlasdb.keyvalue.api.cache.ReadOnlyTransactionScopedCache.getRows(TableReference, Iterable, ColumnSelection, Function, Function):90
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getRows(TableReference, Iterable, ColumnSelection):433
com.palantir.atlasdb.transaction.impl.SerializableTransaction.verifyColumns(Transaction, TableReference, ConcurrentNavigableMap, Multimap, ColumnSelection):620
com.palantir.atlasdb.transaction.impl.SerializableTransaction.verifyRows(Transaction):608
com.palantir.atlasdb.transaction.impl.SerializableTransaction.throwIfReadWriteConflictForSerializable(long):592
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.lambda$commitWrites$48(long):2153
com.palantir.atlasdb.transaction.impl.SnapshotTransaction$$Lambda$1811+0x00000001009b5c68.85615641.run():-1
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.traced(String, Runnable):2185
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.timedAndTraced(String, Runnable):2191
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.lambda$commitWrites$53(TransactionService):2152
com.palantir.atlasdb.transaction.impl.SnapshotTransaction$$Lambda$1555+0x0000000100906750.2139369072.run():-1
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.traced(String, Runnable):2185
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.timedAndTraced(String, Runnable):2191
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.commitWrites(TransactionService):2093
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.commitWithoutCallbacks(TransactionService):2028
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.commitWithoutCallbacks():1994
com.palantir.atlasdb.transaction.impl.AbstractTransactionManager.runTaskThrowOnConflictWithCallback(TransactionTask, CallbackAwareTransaction, Runnable):72
com.palantir.atlasdb.transaction.impl.SnapshotTransactionManager$OpenTransactionImpl.finishWithCallback(TransactionTask, Runnable):269
com.palantir.atlasdb.transaction.impl.SnapshotTransactionManager.runTaskWithConditionThrowOnConflict(PreCommitCondition, ConditionAwareTransactionTask):185
com.palantir.atlasdb.transaction.impl.SerializableTransactionManager.runTaskWithConditionThrowOnConflict(PreCommitCondition, ConditionAwareTransactionTask):58
com.palantir.atlasdb.transaction.impl.AbstractConditionAwareTransactionManager.lambda$runTaskWithConditionWithRetry$0(Supplier, ConditionAwareTransactionTask):50
com.palantir.atlasdb.transaction.impl.AbstractConditionAwareTransactionManager$$Lambda$1383+0x0000000100898888.592123821.run():-1
com.palantir.atlasdb.transaction.impl.TransactionRetryStrategy$$Lambda$1393+0x000000010089b498.184549460.call():-1
com.github.rholder.retry.AttemptTimeLimiters$NoAttemptTimeLimit.call(Callable):78
com.github.rholder.retry.Retryer.call(Callable):160
com.palantir.atlasdb.transaction.impl.TransactionRetryStrategy.runWithRetry(IntPredicate, TransactionRetryStrategy$Retryable):86
com.palantir.atlasdb.transaction.impl.AbstractConditionAwareTransactionManager.runTaskWithConditionWithRetry(Supplier, ConditionAwareTransactionTask):47
com.palantir.atlasdb.transaction.api.TransactionManager.runTaskWithConditionWithRetry(Supplier, ConditionAwareTransactionTask):255
com.palantir.atlasdb.transaction.impl.AbstractConditionAwareTransactionManager.runTaskWithRetry(TransactionTask):62
com.palantir.tritium.proxy.InstrumentedTransactionManager$5.runTaskWithRetry(TransactionTask):-1
com.palantir.atlas.migration2.orchestration.consensus.HeartbeatingConsensusStore.writeHeartbeat(String, SchemaVersion, Set, long):97
com.palantir.atlas.migration2.orchestration.consensus.HeartbeatingConsensusManager$HeartbeatWritingService.runOneIteration():147
com.google.common.util.concurrent.AbstractScheduledService$ServiceDelegate$Task.run():234
com.google.common.util.concurrent.Callables.lambda$threadRenaming$3(Supplier, Runnable):105
com.google.common.util.concurrent.Callables$$Lambda$1378+0x0000000100896798.960545396.run():-1
com.palantir.tracing.Tracers.lambda$wrapWithNewTrace$1(Observability, String, Runnable):435
com.palantir.tracing.Tracers$$Lambda$332+0x000000010042b9d0.1408073939.run():-1
com.palantir.tritium.metrics.TaggedMetricsScheduledExecutorService$TaggedMetricsRunnable.run():138
java.util.concurrent.Executors$RunnableAdapter.call():539
java.util.concurrent.FutureTask.runAndReset():305
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run():305
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker):1136
java.util.concurrent.ThreadPoolExecutor$Worker.run():635
com.palantir.tritium.metrics.TaggedMetricsThreadFactory$InstrumentedTask.run():94
java.lang.Thread.run():840
org.eclipse.collections.api.factory.Sets.<clinit>():59
org.eclipse.collections.impl.set.immutable.primitive.ImmutableLongEmptySet.collect(LongToObjectFunction):146
org.eclipse.collections.impl.set.immutable.primitive.ImmutableLongEmptySet.collect(LongToObjectFunction):47
com.palantir.atlasdb.transaction.impl.CommitTimestampLoader.waitForCommitToComplete(LongIterable):178
com.palantir.atlasdb.transaction.impl.CommitTimestampLoader.waitForCommitterToComplete(TableReference, LongIterable):210
com.palantir.atlasdb.transaction.impl.CommitTimestampLoader.getCommitTimestamps(TableReference, LongIterable, boolean, AsyncTransactionService):126
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getCommitTimestamps(TableReference, LongIterable, boolean, AsyncTransactionService):2590
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getWithPostFilteringInternal(TableReference, Map, Collection, Function, AsyncKeyValueService, AsyncTransactionService):1714
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.lambda$getWithPostFilteringIterate$32(TableReference, Collection, Function, AsyncKeyValueService, AsyncTransactionService, Map):1593
com.palantir.atlasdb.transaction.impl.SnapshotTransaction$$Lambda$1489+0x00000001008e6858.863379376.apply(Object):-1
com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(AsyncFunction, Object):224
com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(Object, Object):211
com.google.common.util.concurrent.AbstractTransformFuture.run():124
com.google.common.util.concurrent.DirectExecutor.execute(Runnable):31
com.google.common.util.concurrent.ImmediateFuture.addListener(Runnable, Executor):49
com.google.common.util.concurrent.AbstractTransformFuture.create(ListenableFuture, AsyncFunction, Executor):44
com.google.common.util.concurrent.Futures.transformAsync(ListenableFuture, AsyncFunction, Executor):453
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getWithPostFilteringIterate(TableReference, Map, Collection, Function, AsyncKeyValueService, AsyncTransactionService):1587
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.lambda$getWithPostFilteringAsync$31(TableReference, Collection, Function, AsyncKeyValueService, AsyncTransactionService, Map):1570
com.palantir.atlasdb.transaction.impl.SnapshotTransaction$$Lambda$1488+0x00000001008e6630.814467083.apply(Object):-1
com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(AsyncFunction, Object):224
com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(Object, Object):211
com.google.common.util.concurrent.AbstractTransformFuture.run():124
com.google.common.util.concurrent.DirectExecutor.execute(Runnable):31
com.google.common.util.concurrent.ImmediateFuture.addListener(Runnable, Executor):49
com.google.common.util.concurrent.AbstractTransformFuture.create(ListenableFuture, AsyncFunction, Executor):44
com.google.common.util.concurrent.Futures.transformAsync(ListenableFuture, AsyncFunction, Executor):453
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getWithPostFilteringAsync(TableReference, Map, Function, AsyncKeyValueService, AsyncTransactionService):1568
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getWithPostFilteringSync(TableReference, Map, Function):1522
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.filterRowResults(TableReference, Map, ImmutableMap$Builder):884
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getRowsInternal(TableReference, Iterable, ColumnSelection):468
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.lambda$getRows$1(TableReference, ColumnSelection, Iterable):444
com.palantir.atlasdb.transaction.impl.SnapshotTransaction$$Lambda$1462+0x00000001008db120.1211247912.apply(Object):-1
com.palantir.atlasdb.keyvalue.api.cache.NoOpTransactionScopedCache.getRows(TableReference, Iterable, ColumnSelection, Function, Function):85
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getRows(TableReference, Iterable, ColumnSelection):433
com.palantir.atlasdb.transaction.impl.SerializableTransaction.getRows(TableReference, Iterable, ColumnSelection):210
org.eclipse.collections.api.factory.Sets.<clinit>():61
org.eclipse.collections.impl.set.immutable.primitive.ImmutableLongEmptySet.collect(LongToObjectFunction):146
org.eclipse.collections.impl.set.immutable.primitive.ImmutableLongEmptySet.collect(LongToObjectFunction):47
com.palantir.atlasdb.transaction.impl.CommitTimestampLoader.waitForCommitToComplete(LongIterable):178
com.palantir.atlasdb.transaction.impl.CommitTimestampLoader.waitForCommitterToComplete(TableReference, LongIterable):210
com.palantir.atlasdb.transaction.impl.CommitTimestampLoader.getCommitTimestamps(TableReference, LongIterable, boolean, AsyncTransactionService):126
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getCommitTimestamps(TableReference, LongIterable, boolean, AsyncTransactionService):2590
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getWithPostFilteringInternal(TableReference, Map, Collection, Function, AsyncKeyValueService, AsyncTransactionService):1714
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.lambda$getWithPostFilteringIterate$32(TableReference, Collection, Function, AsyncKeyValueService, AsyncTransactionService, Map):1593
com.palantir.atlasdb.transaction.impl.SnapshotTransaction$$Lambda$1489+0x00000001008e6858.863379376.apply(Object):-1
com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(AsyncFunction, Object):224
com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(Object, Object):211
com.google.common.util.concurrent.AbstractTransformFuture.run():124
com.google.common.util.concurrent.DirectExecutor.execute(Runnable):31
com.google.common.util.concurrent.ImmediateFuture.addListener(Runnable, Executor):49
com.google.common.util.concurrent.AbstractTransformFuture.create(ListenableFuture, AsyncFunction, Executor):44
com.google.common.util.concurrent.Futures.transformAsync(ListenableFuture, AsyncFunction, Executor):453
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getWithPostFilteringIterate(TableReference, Map, Collection, Function, AsyncKeyValueService, AsyncTransactionService):1587
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.lambda$getWithPostFilteringAsync$31(TableReference, Collection, Function, AsyncKeyValueService, AsyncTransactionService, Map):1570
com.palantir.atlasdb.transaction.impl.SnapshotTransaction$$Lambda$1488+0x00000001008e6630.814467083.apply(Object):-1
com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(AsyncFunction, Object):224
com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(Object, Object):211
com.google.common.util.concurrent.AbstractTransformFuture.run():124
com.google.common.util.concurrent.DirectExecutor.execute(Runnable):31
com.google.common.util.concurrent.ImmediateFuture.addListener(Runnable, Executor):49
com.google.common.util.concurrent.AbstractTransformFuture.create(ListenableFuture, AsyncFunction, Executor):44
com.google.common.util.concurrent.Futures.transformAsync(ListenableFuture, AsyncFunction, Executor):453
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getWithPostFilteringAsync(TableReference, Map, Function, AsyncKeyValueService, AsyncTransactionService):1568
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getWithPostFilteringSync(TableReference, Map, Function):1522
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.filterRowResults(TableReference, Map, ImmutableMap$Builder):884
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getRowsInternal(TableReference, Iterable, ColumnSelection):468
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.lambda$getRows$1(TableReference, ColumnSelection, Iterable):444
com.palantir.atlasdb.transaction.impl.SnapshotTransaction$$Lambda$1462+0x00000001008db120.1211247912.apply(Object):-1
com.palantir.atlasdb.keyvalue.api.cache.NoOpTransactionScopedCache.getRows(TableReference, Iterable, ColumnSelection, Function, Function):85
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getRows(TableReference, Iterable, ColumnSelection):433
com.palantir.atlasdb.transaction.impl.SerializableTransaction.getRows(TableReference, Iterable, ColumnSelection):210
org.eclipse.collections.api.factory.Sets.<clinit>():57
org.eclipse.collections.impl.set.immutable.primitive.ImmutableLongEmptySet.collect(LongToObjectFunction):146
org.eclipse.collections.impl.set.immutable.primitive.ImmutableLongEmptySet.collect(LongToObjectFunction):47
com.palantir.atlasdb.transaction.impl.CommitTimestampLoader.waitForCommitToComplete(LongIterable):178
com.palantir.atlasdb.transaction.impl.CommitTimestampLoader.waitForCommitterToComplete(TableReference, LongIterable):210
com.palantir.atlasdb.transaction.impl.CommitTimestampLoader.getCommitTimestamps(TableReference, LongIterable, boolean, AsyncTransactionService):126
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getCommitTimestamps(TableReference, LongIterable, boolean, AsyncTransactionService):2590
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getWithPostFilteringInternal(TableReference, Map, Collection, Function, AsyncKeyValueService, AsyncTransactionService):1714
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.lambda$getWithPostFilteringIterate$32(TableReference, Collection, Function, AsyncKeyValueService, AsyncTransactionService, Map):1593
com.palantir.atlasdb.transaction.impl.SnapshotTransaction$$Lambda$1489+0x00000001008e6858.863379376.apply(Object):-1
com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(AsyncFunction, Object):224
com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(Object, Object):211
com.google.common.util.concurrent.AbstractTransformFuture.run():124
com.google.common.util.concurrent.DirectExecutor.execute(Runnable):31
com.google.common.util.concurrent.ImmediateFuture.addListener(Runnable, Executor):49
com.google.common.util.concurrent.AbstractTransformFuture.create(ListenableFuture, AsyncFunction, Executor):44
com.google.common.util.concurrent.Futures.transformAsync(ListenableFuture, AsyncFunction, Executor):453
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getWithPostFilteringIterate(TableReference, Map, Collection, Function, AsyncKeyValueService, AsyncTransactionService):1587
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.lambda$getWithPostFilteringAsync$31(TableReference, Collection, Function, AsyncKeyValueService, AsyncTransactionService, Map):1570
com.palantir.atlasdb.transaction.impl.SnapshotTransaction$$Lambda$1488+0x00000001008e6630.814467083.apply(Object):-1
com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(AsyncFunction, Object):224
com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(Object, Object):211
com.google.common.util.concurrent.AbstractTransformFuture.run():124
com.google.common.util.concurrent.DirectExecutor.execute(Runnable):31
com.google.common.util.concurrent.ImmediateFuture.addListener(Runnable, Executor):49
com.google.common.util.concurrent.AbstractTransformFuture.create(ListenableFuture, AsyncFunction, Executor):44
com.google.common.util.concurrent.Futures.transformAsync(ListenableFuture, AsyncFunction, Executor):453
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getWithPostFilteringAsync(TableReference, Map, Function, AsyncKeyValueService, AsyncTransactionService):1568
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getWithPostFilteringSync(TableReference, Map, Function):1522
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.filterRowResults(TableReference, Map, ImmutableMap$Builder):884
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getRowsInternal(TableReference, Iterable, ColumnSelection):468
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.lambda$getRows$1(TableReference, ColumnSelection, Iterable):444
com.palantir.atlasdb.transaction.impl.SnapshotTransaction$$Lambda$1462+0x00000001008db120.1211247912.apply(Object):-1
com.palantir.atlasdb.keyvalue.api.cache.NoOpTransactionScopedCache.getRows(TableReference, Iterable, ColumnSelection, Function, Function):85
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getRows(TableReference, Iterable, ColumnSelection):433
com.palantir.atlasdb.transaction.impl.SerializableTransaction.getRows(TableReference, Iterable, ColumnSelection):210
org.eclipse.collections.api.factory.Sets.<clinit>():63
org.eclipse.collections.impl.set.immutable.primitive.ImmutableLongEmptySet.collect(LongToObjectFunction):146
org.eclipse.collections.impl.set.immutable.primitive.ImmutableLongEmptySet.collect(LongToObjectFunction):47
com.palantir.atlasdb.transaction.impl.CommitTimestampLoader.waitForCommitToComplete(LongIterable):178
com.palantir.atlasdb.transaction.impl.CommitTimestampLoader.waitForCommitterToComplete(TableReference, LongIterable):210
com.palantir.atlasdb.transaction.impl.CommitTimestampLoader.getCommitTimestamps(TableReference, LongIterable, boolean, AsyncTransactionService):126
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getCommitTimestamps(TableReference, LongIterable, boolean, AsyncTransactionService):2590
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getWithPostFilteringInternal(TableReference, Map, Collection, Function, AsyncKeyValueService, AsyncTransactionService):1714
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.lambda$getWithPostFilteringIterate$32(TableReference, Collection, Function, AsyncKeyValueService, AsyncTransactionService, Map):1593
com.palantir.atlasdb.transaction.impl.SnapshotTransaction$$Lambda$1489+0x00000001008e6858.863379376.apply(Object):-1
com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(AsyncFunction, Object):224
com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(Object, Object):211
com.google.common.util.concurrent.AbstractTransformFuture.run():124
com.google.common.util.concurrent.DirectExecutor.execute(Runnable):31
com.google.common.util.concurrent.ImmediateFuture.addListener(Runnable, Executor):49
com.google.common.util.concurrent.AbstractTransformFuture.create(ListenableFuture, AsyncFunction, Executor):44
com.google.common.util.concurrent.Futures.transformAsync(ListenableFuture, AsyncFunction, Executor):453
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getWithPostFilteringIterate(TableReference, Map, Collection, Function, AsyncKeyValueService, AsyncTransactionService):1587
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.lambda$getWithPostFilteringAsync$31(TableReference, Collection, Function, AsyncKeyValueService, AsyncTransactionService, Map):1570
com.palantir.atlasdb.transaction.impl.SnapshotTransaction$$Lambda$1488+0x00000001008e6630.814467083.apply(Object):-1
com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(AsyncFunction, Object):224
com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(Object, Object):211
com.google.common.util.concurrent.AbstractTransformFuture.run():124
com.google.common.util.concurrent.DirectExecutor.execute(Runnable):31
com.google.common.util.concurrent.ImmediateFuture.addListener(Runnable, Executor):49
com.google.common.util.concurrent.AbstractTransformFuture.create(ListenableFuture, AsyncFunction, Executor):44
com.google.common.util.concurrent.Futures.transformAsync(ListenableFuture, AsyncFunction, Executor):453
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getWithPostFilteringAsync(TableReference, Map, Function, AsyncKeyValueService, AsyncTransactionService):1568
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getWithPostFilteringSync(TableReference, Map, Function):1522
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.filterRowResults(TableReference, Map, ImmutableMap$Builder):884
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getRowsInternal(TableReference, Iterable, ColumnSelection):468
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.lambda$getRows$1(TableReference, ColumnSelection, Iterable):444
com.palantir.atlasdb.transaction.impl.SnapshotTransaction$$Lambda$1462+0x00000001008db120.1211247912.apply(Object):-1
com.palantir.atlasdb.keyvalue.api.cache.NoOpTransactionScopedCache.getRows(TableReference, Iterable, ColumnSelection, Function, Function):85
com.palantir.atlasdb.transaction.impl.SnapshotTransaction.getRows(TableReference, Iterable, ColumnSelection):433
com.palantir.atlasdb.transaction.impl.SerializableTransaction.getRows(TableReference, Iterable, ColumnSelection):210
Released 0.1077.0
General
Before this PR:
Follow up to https://github.com/palantir/atlasdb/pull/7073 as we encountered an AtlasDB service that hit JDK classloader deadlock bug JDK-8266350 / JDK-8266310 on JDK 17 that was outside of #7073 changes.
The problematic class loading was the service loader traversal in
org.eclipse.collections.api.factory.Sets
looking fororg.eclipse.collections.api.factory.set.ImmutableSetFactory
instances triggered fromorg.eclipse.collections.impl.set.immutable.primitive.ImmutableLongEmptySet#collect
viaCommitTimestampLoader.waitForCommitToComplete(LongIterable)
. This ends uporg.eclipse.collections.impl.set.immutable.primitive.ImmutableLongEmptySet#collect
:https://github.com/palantir/atlasdb/blob/59ba3ee8fcbcaa4b1c1985f34f32f6481a3e5914/atlasdb-impl-shared/src/main/java/com/palantir/atlasdb/transaction/impl/CommitTimestampLoader.java#L174-L181
Note that this code was recently refactored and moved to
DefaultCommitTimestampLoader
, but the same issue may still occur with some probability depending on JNI & class loading ordering.https://github.com/palantir/atlasdb/blob/29d98957a65265a83bb525af79ce637a84fb9885/atlasdb-impl-shared/src/main/java/com/palantir/atlasdb/transaction/impl/DefaultCommitTimestampLoader.java#L183-L190
After this PR:
As a temporary workaround for services that are not yet running with JDK-8266310 fix in JDK 18+, we can pre-load the
eclipse-collections
classes that traverseServiceLoader
as those are the ones most likely to encounter deadlock with concurrent JNIloadLibrary
calls.==COMMIT_MSG== Eagerly initialize Eclipse collections classes to avoid potential JDK classloader deadlock bug JDK-8266350 / JDK-8266310 when one thread is attempting to load a native library (e.g. netty which is used by grpc) while another thread is attempting to load classes from a cryptographically signed JAR (e.g. eclipse-collections). This has been seen by some folks using netty & eclipse-collections in netty issue 11209](https://github.com/netty/netty/issues/11209#issuecomment-829468638)
JDK-8266310 fixed this deadlock in JDK 18+.
==COMMIT_MSG==
Priority:
Concerns / possible downsides (what feedback would you like?):
This could add significant time to initial transaction manager startup (e.g. unit test in CI took 18.4 seconds to initialize these
eclipse-collections
classes, with a relatively small set of libraries inatlasdb-commons
compared to full services & the classes in their application classloader context )Is documentation needed?:
Compatibility
Does this PR create any API breaks (e.g. at the Java or HTTP layers) - if so, do we have compatibility?:
Does this PR change the persisted format of any data - if so, do we have forward and backward compatibility?:
The code in this PR may be part of a blue-green deploy. Can upgrades from previous versions safely coexist? (Consider restarts of blue or green nodes.):
Does this PR rely on statements being true about other products at a deployment - if so, do we have correct product dependencies on these products (or other ways of verifying that these statements are true)?:
Does this PR need a schema migration?
Testing and Correctness
What, if any, assumptions are made about the current state of the world? If they change over time, how will we find out?:
What was existing testing like? What have you done to improve it?:
If this PR contains complex concurrent or asynchronous code, is it correct? The onus is on the PR writer to demonstrate this.:
If this PR involves acquiring locks or other shared resources, how do we ensure that these are always released?:
Execution
How would I tell this PR works in production? (Metrics, logs, etc.):
Has the safety of all log arguments been decided correctly?:
Will this change significantly affect our spending on metrics or logs?:
How would I tell that this PR does not work in production? (monitors, etc.):
If this PR does not work as expected, how do I fix that state? Would rollback be straightforward?:
If the above plan is more complex than “recall and rollback”, please tag the support PoC here (if it is the end of the week, tag both the current and next PoC):
Scale
Would this PR be expected to pose a risk at scale? Think of the shopping product at our largest stack.:
Would this PR be expected to perform a large number of database calls, and/or expensive database calls (e.g., row range scans, concurrent CAS)?:
Would this PR ever, with time and scale, become the wrong thing to do - and if so, how would we know that we need to do something differently?:
Development Process
Where should we start reviewing?:
If this PR is in excess of 500 lines excluding versions lock-files, why does it not make sense to split it?:
Please tag any other people who should be aware of this PR: @jeremyk-91 @sverma30 @raiju