You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by "Desimpel, Ignace" <Ig...@nuance.com> on 2015/06/02 12:22:25 UTC

deadlock cleanup request due to compaction

After adding a 5-th node I started running NodeProbe:: forceKeyspaceCleanup. That function is not returning. Below I added the program stack trace information
that shows that in this case and probably others cases it is possible that there is a deadlock

In my case, the compactionManager is calling a synchronized method getNextBackgroundTask that is calling getMaximalTask. And in my case that function is running an endless loop so the synchronized object is never released. And the request to cleanup is now trying to call the synchronized pause() function, so that function and thus the cleanup cannot proceed.

Configuration : 5 node, v-nodes, replication 3, LCS, version 2.0.7



Daemon Thread [CompactionExecutor:72] (Suspended)
                owns: LeveledManifest  (id=8722)
                owns: LeveledCompactionStrategy  (id=8552)
                                waited by: Daemon System Thread [RMI TCP Connection(14840)-10.164.8.73] (Suspended)
                LeveledManifest.getCompactionCandidates() line: 247
                LeveledCompactionStrategy.getMaximalTask(int) line: 121
                LeveledCompactionStrategy.getNextBackgroundTask(int) line: 113
                CompactionManager$BackgroundCompactionTask.run() line: 191
                Executors$RunnableAdapter<T>.call() line: 471
                FutureTask<V>.run() line: 262
                CompactionManager$CompactionExecutor(ThreadPoolExecutor).runWorker(ThreadPoolExecutor$Worker) line: 1145
                ThreadPoolExecutor$Worker.run() line: 615
                Thread.run() line: 745


Daemon System Thread [RMI TCP Connection(14840)-10.164.8.73] (Suspended)
                owns: ColumnFamilyStore  (id=8551)
                waiting for: LeveledCompactionStrategy  (id=8552)
                                owned by: Daemon Thread [CompactionExecutor:72] (Suspended)
                LeveledCompactionStrategy(AbstractCompactionStrategy).pause() line: 112
                ColumnFamilyStore.runWithCompactionsDisabled(Callable<V>, boolean) line: 2056
                ColumnFamilyStore.markAllCompacting() line: 2125
                CompactionManager.performAllSSTableOperation(ColumnFamilyStore, CompactionManager$AllSSTablesOperation) line: 214
                CompactionManager.performCleanup(ColumnFamilyStore, CounterId$OneShotRenewer) line: 265
                ColumnFamilyStore.forceCleanup(CounterId$OneShotRenewer) line: 1105
                StorageService.forceKeyspaceCleanup(String, String...) line: 2215
                GeneratedMethodAccessor42.invoke(Object, Object[]) line: not available
                DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43
                Method.invoke(Object, Object...) line: 606
                Trampoline.invoke(Method, Object, Object[]) line: 75
                GeneratedMethodAccessor19.invoke(Object, Object[]) line: not available
                DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43
                Method.invoke(Object, Object...) line: 606
                MethodUtil.invoke(Method, Object, Object[]) line: 279
                StandardMBeanIntrospector.invokeM2(Method, Object, Object[], Object) line: 112
                StandardMBeanIntrospector.invokeM2(Object, Object, Object[], Object) line: 46
                StandardMBeanIntrospector(MBeanIntrospector<M>).invokeM(M, Object, Object[], Object) line: 237
                PerInterface<M>.invoke(Object, String, Object[], String[], Object) line: 138
                StandardMBeanSupport(MBeanSupport<M>).invoke(String, Object[], String[]) line: 252
                DefaultMBeanServerInterceptor.invoke(ObjectName, String, Object[], String[]) line: 819
                JmxMBeanServer.invoke(ObjectName, String, Object[], String[]) line: 801
                RMIConnectionImpl.doOperation(int, Object[]) line: 1487
                RMIConnectionImpl.access$300(RMIConnectionImpl, int, Object[]) line: 97
                RMIConnectionImpl$PrivilegedOperation.run() line: 1328
                RMIConnectionImpl.doPrivilegedOperation(int, Object[], Subject) line: 1420
                RMIConnectionImpl.invoke(ObjectName, String, MarshalledObject, String[], Subject) line: 848
                GeneratedMethodAccessor41.invoke(Object, Object[]) line: not available
                DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43
                Method.invoke(Object, Object...) line: 606
                UnicastServerRef.dispatch(Remote, RemoteCall) line: 322
                Transport$1.run() line: 177
                Transport$1.run() line: 174
                AccessController.doPrivileged(PrivilegedExceptionAction<T>, AccessControlContext) line: not available [native method]
                TCPTransport(Transport).serviceCall(RemoteCall) line: 173
                TCPTransport.handleMessages(Connection, boolean) line: 556
                TCPTransport$ConnectionHandler.run0() line: 811
                TCPTransport$ConnectionHandler.run() line: 670
                ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: 1145
                ThreadPoolExecutor$Worker.run() line: 615
                Thread.run() line: 745