Return-Path: X-Original-To: apmail-cassandra-commits-archive@www.apache.org Delivered-To: apmail-cassandra-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 7B167C092 for ; Wed, 12 Mar 2014 16:11:53 +0000 (UTC) Received: (qmail 72517 invoked by uid 500); 12 Mar 2014 16:11:47 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 72474 invoked by uid 500); 12 Mar 2014 16:11:46 -0000 Mailing-List: contact commits-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cassandra.apache.org Delivered-To: mailing list commits@cassandra.apache.org Received: (qmail 72452 invoked by uid 99); 12 Mar 2014 16:11:46 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 12 Mar 2014 16:11:46 +0000 Date: Wed, 12 Mar 2014 16:11:46 +0000 (UTC) From: "Jonathan Ellis (JIRA)" To: commits@cassandra.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Assigned] (CASSANDRA-6845) Cleanup fails with IndexOutOfBoundsException exception MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/CASSANDRA-6845?page=3Dcom.atla= ssian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jonathan Ellis reassigned CASSANDRA-6845: ----------------------------------------- Assignee: Dmitrij Koniajev > Cleanup fails with IndexOutOfBoundsException exception > ------------------------------------------------------ > > Key: CASSANDRA-6845 > URL: https://issues.apache.org/jira/browse/CASSANDRA-6845 > Project: Cassandra > Issue Type: Bug > Components: Core > Environment: CentOS Linux 2.6.32-431.el6.x86_64 > Datastax Cassandra 2.0.5-1 > Reporter: Dmitrij Koniajev > Assignee: Dmitrij Koniajev > Attachments: 0001-fixed-bug-in-CompactionManager.needsCleanup.pat= ch > > > Originally we had Cassandra cluster with the following configuration: > {quote} > Initial tokens: > 10.1.11.51: -9223372036854775808 > 10.1.11.52: 0 > 10.2.11.51: -9223372036854775807 > 10.2.11.52: 1 > Endpoint snitch: PropertyFileSnitch > 10.1.11.51=3DDC1:RAC1 > 10.1.11.52=3DDC1:RAC1=20 > 10.2.11.51=3DDC2:RAC1 > 10.2.11.52=3DDC2:RAC1 > {quote} > We have created keyspace with network topology strategy and replication f= actor 2: > {quote} > CREATE KEYSPACE our_keyspace WITH replication =3D { > 'class': 'NetworkTopologyStrategy', > 'DC2': '2', > 'DC1': '2' > }; > {quote} > All column families have been created with SizeTiered compaction strategy= . =D0=90fter a while column families have been migrated to LeveledCompactio= nStrategy and then replication factor was decreased to 1. > We started cleanup, but on non-seed nodes (10.1.11.52,10.2.11.52) it fail= ed with assertion error. Assertion stacktrace was the same as described in = [CASSANDRA-6774|https://issues.apache.org/jira/browse/CASSANDRA-6774] issue= . > Then we've stopped all compactions, started cleanup again and got another= exception: > {quote} > Error occurred during cleanup > java.util.concurrent.ExecutionException: java.lang.IndexOutOfBoundsExcept= ion: Index: 1, Size: 1 > at java.util.concurrent.FutureTask.report(FutureTask.java:122) > at java.util.concurrent.FutureTask.get(FutureTask.java:188) > at org.apache.cassandra.db.compaction.CompactionManager.performAl= lSSTableOperation(CompactionManager.java:227) > at org.apache.cassandra.db.compaction.CompactionManager.performCl= eanup(CompactionManager.java:265) > at org.apache.cassandra.db.ColumnFamilyStore.forceCleanup(ColumnF= amilyStore.java:1115) > at org.apache.cassandra.service.StorageService.forceKeyspaceClean= up(StorageService.java:2152) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccess= orImpl.java:57) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth= odAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:606) > at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:75) > at sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth= odAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:606) > at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:279) > at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(Sta= ndardMBeanIntrospector.java:112) > at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(Sta= ndardMBeanIntrospector.java:46) > at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrosp= ector.java:237) > at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:= 138) > at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:= 252) > at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(D= efaultMBeanServerInterceptor.java:819) > at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.j= ava:801) > at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIC= onnectionImpl.java:1487) > at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMICo= nnectionImpl.java:97) > at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperat= ion.run(RMIConnectionImpl.java:1328) > at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOper= ation(RMIConnectionImpl.java:1420) > at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnec= tionImpl.java:848) > at sun.reflect.GeneratedMethodAccessor20.invoke(Unknown Source) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth= odAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:606) > at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java= :322) > at sun.rmi.transport.Transport$1.run(Transport.java:177) > at sun.rmi.transport.Transport$1.run(Transport.java:174) > at java.security.AccessController.doPrivileged(Native Method) > at sun.rmi.transport.Transport.serviceCall(Transport.java:173) > at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport= .java:556) > at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPT= ransport.java:811) > at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTr= ansport.java:670) > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolEx= ecutor.java:1145) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolE= xecutor.java:615) > at java.lang.Thread.run(Thread.java:744) > Caused by: java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 > at java.util.ArrayList.rangeCheck(ArrayList.java:635) > at java.util.ArrayList.get(ArrayList.java:411) > at org.apache.cassandra.db.compaction.CompactionManager.needsClea= nup(CompactionManager.java:502) > at org.apache.cassandra.db.compaction.CompactionManager.doCleanup= Compaction(CompactionManager.java:540) > at org.apache.cassandra.db.compaction.CompactionManager.access$40= 0(CompactionManager.java:62) > at org.apache.cassandra.db.compaction.CompactionManager$5.perform= (CompactionManager.java:274) > at org.apache.cassandra.db.compaction.CompactionManager$2.call(Co= mpactionManager.java:222) > at java.util.concurrent.FutureTask.run(FutureTask.java:262) > ... 3 more > {quote} > It seems there is typo in *needsCleanup* method of *CompactionManager* cl= ass and the supplied patch should fix the issue. > Get method on the line *502* (*CompactionManager.java*) throws exception,= because of the wrong comparison on the line *496*: there should be *sorted= Ranges* size check, not *ownedRanges*. -- This message was sent by Atlassian JIRA (v6.2#6252)