Details
Description
Details come from an offline cluster, so it's difficult to reproduce the exact details. A very complex iterator was running over tablet. "deepCopy" may have been called a couple dozen times, which may have contributed to the problem.
Relevant facts:
A scan and a minor compaction created a deadlock which was detected by the java runtime.
"Query... ": waiting to lock monitor 0x1234 (object 0x1234, a java.util.Collections$SynchronizedRandomAccessList), which is held by "minor compactor 1" "minor compactor 1": waiting to lock monitor 0x9876 (object 0x9876, a org.apache.accumulo.core.iterators.system.SourceSwitchingIterator), which is held by "Query..."
Java stacks:
"Query..." at java.util.Collections@SynchronizedCollection.add(Collections.java:1636) - waiting to lock <0x1234> (a java.util.Collections$SynchronizedRandomAccessList) at org.apache.accumulo.core.iterators.system.SourceSwitchingIterator.<init>(SourceSwitchingIterator.java:72) at org.apache.accumulo.core.iterators.system.SourceSwitchingIterator.deepCopy(SourceSwitchingIterator:85) - locked <0x9876> (a org.apache.accumulo.core.iterators.system.SourceSwitchingIterator) ... PartialMutationSkippingIterator.deepCopy(InMememoryMap.java:113) ... InMemoryMap#MemoryIterator.deepCopy(InnMemoryMap.java:623) ...
and:
"minor compactor 1": at org.apache.accumulo.core.iterators.system.SourceSwitchingIterarot._switchNow(SourceSwitchingIterator:171) - waiting to lock <0x9876> (a org.apache.accumulo.core.iterators.system.SourceSwitchingIterator) at org.apache.accumulo.iterators.system.SourceSwitchingIterator.switchNow(SourceSwitchingIterator.java:184) locked <0x1234> (a java.util.Collections#SynhronizedRandomAccessList) at org.apache.accumulo.tserver.InMemoryMap$MemoryIterator.switchNow(InMemoryMap.java:647) ...