[ 
https://issues.apache.org/jira/browse/CASSANDRA-6262?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sylvain Lebresne updated CASSANDRA-6262:
----------------------------------------

    Attachment: 6262.patch

Not against improving the error message. Attaching a tentative patch for this. 
I'll note though that CompositeType seems like the only logical place to catch 
this and rethrow with more info, but that also mean we can't be absolutely sure 
of what the problem is when we're there, so I've attempted to throw an helpful 
error message without being too specific that it would be confusing in some 
other cases (than the one of this issue). It's also possible that an 
incompatible schema would throw another kind of exception, so this may not be 
enough, but well, that's progress so we can start there I guess.

> Nodetool compact throws an error after importing data with sstableloader
> ------------------------------------------------------------------------
>
>                 Key: CASSANDRA-6262
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-6262
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>            Reporter: J.B. Langston
>             Fix For: 1.2.14
>
>         Attachments: 6262.patch
>
>
> Exception when running nodetool compact:
> {code}
> Error occurred during compaction
> java.util.concurrent.ExecutionException: java.lang.IndexOutOfBoundsException: 
> index (2) must be less than size (2)
>       at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
>       at java.util.concurrent.FutureTask.get(FutureTask.java:111)
>       at 
> org.apache.cassandra.db.compaction.CompactionManager.performMaximal(CompactionManager.java:331)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.forceMajorCompaction(ColumnFamilyStore.java:1691)
>       at 
> org.apache.cassandra.service.StorageService.forceTableCompaction(StorageService.java:2198)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:606)
>       at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:75)
>       at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.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(StandardMBeanIntrospector.java:112)
>       at 
> com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:46)
>       at 
> com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.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(DefaultMBeanServerInterceptor.java:819)
>       at 
> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
>       at 
> javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1487)
>       at 
> javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:97)
>       at 
> javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1328)
>       at 
> javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1420)
>       at 
> javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:848)
>       at sun.reflect.GeneratedMethodAccessor19.invoke(Unknown Source)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.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:553)
>       at 
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808)
>       at 
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>       at java.lang.Thread.run(Thread.java:724)
> Caused by: java.lang.IndexOutOfBoundsException: index (2) must be less than 
> size (2)
>       at 
> com.google.common.base.Preconditions.checkElementIndex(Preconditions.java:305)
>       at 
> com.google.common.base.Preconditions.checkElementIndex(Preconditions.java:284)
>       at 
> com.google.common.collect.RegularImmutableList.get(RegularImmutableList.java:81)
>       at 
> org.apache.cassandra.db.marshal.CompositeType.getComparator(CompositeType.java:94)
>       at 
> org.apache.cassandra.db.marshal.AbstractCompositeType.compare(AbstractCompositeType.java:76)
>       at 
> org.apache.cassandra.db.marshal.AbstractCompositeType.compare(AbstractCompositeType.java:31)
>       at 
> org.apache.cassandra.db.ArrayBackedSortedColumns.addColumn(ArrayBackedSortedColumns.java:128)
>       at 
> org.apache.cassandra.db.AbstractColumnContainer.addColumn(AbstractColumnContainer.java:119)
>       at 
> org.apache.cassandra.db.AbstractColumnContainer.addColumn(AbstractColumnContainer.java:114)
>       at org.apache.cassandra.db.ColumnFamily.addAtom(ColumnFamily.java:219)
>       at 
> org.apache.cassandra.db.ColumnFamilySerializer.deserializeColumnsFromSSTable(ColumnFamilySerializer.java:149)
>       at 
> org.apache.cassandra.io.sstable.SSTableIdentityIterator.getColumnFamilyWithColumns(SSTableIdentityIterator.java:234)
>       at 
> org.apache.cassandra.db.compaction.PrecompactedRow.merge(PrecompactedRow.java:114)
>       at 
> org.apache.cassandra.db.compaction.PrecompactedRow.<init>(PrecompactedRow.java:98)
>       at 
> org.apache.cassandra.db.compaction.CompactionController.getCompactedRow(CompactionController.java:160)
>       at 
> org.apache.cassandra.db.compaction.CompactionIterable$Reducer.getReduced(CompactionIterable.java:76)
>       at 
> org.apache.cassandra.db.compaction.CompactionIterable$Reducer.getReduced(CompactionIterable.java:57)
>       at 
> org.apache.cassandra.utils.MergeIterator$OneToOne.computeNext(MergeIterator.java:203)
>       at 
> com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
>       at 
> com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
>       at 
> org.apache.cassandra.db.compaction.CompactionTask.runWith(CompactionTask.java:145)
>       at 
> org.apache.cassandra.io.util.DiskAwareRunnable.runMayThrow(DiskAwareRunnable.java:48)
>       at 
> org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28)
>       at 
> org.apache.cassandra.db.compaction.CompactionTask.executeInternal(CompactionTask.java:58)
>       at 
> org.apache.cassandra.db.compaction.AbstractCompactionTask.execute(AbstractCompactionTask.java:60)
>       at 
> org.apache.cassandra.db.compaction.CompactionManager$6.runMayThrow(CompactionManager.java:352)
>       at 
> org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28)
>       at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>       at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
>       at java.util.concurrent.FutureTask.run(FutureTask.java:166)
>       ... 3 more
> {code}
> Schema:
> {code}
> create table test (
>  a uuid,
>  b int,
>  c timestamp,
>  d text,
>  e uuid,
>  f blob,
>  g uuid,
>  h boolean,
>  primary key (a, b)
> );
> {code}



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to