[
https://issues.apache.org/jira/browse/CASSANDRA-9580?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14582174#comment-14582174
]
Benedict commented on CASSANDRA-9580:
-------------------------------------
bq. This seems hacky. cc/ Benedict
It is, and I was torn at the time between this and modifying the Descriptor
equality and doing my best to ensure that didn't break stuff. Fortunately it
will be going away with CASSANDRA-7066
bq. So here's a patch for ignoring sstables opened for non-normal reasons
There's already a facility for this, by calling
ColumnFamilyStore.CANONICAL_SSTABLES on a DataTracker.View, but since I thought
we'd caught all of the problematic codepaths that could use an early open file
and switched them to this already, perhaps we should make the choice absolutely
explicit. i.e. hide the sstables set in View, and require that the accessors
stipulate to a function call which set they want. Happy to do that myself, in
another ticket, though.
> Cardinality check broken during incremental compaction re-opening
> -----------------------------------------------------------------
>
> Key: CASSANDRA-9580
> URL: https://issues.apache.org/jira/browse/CASSANDRA-9580
> Project: Cassandra
> Issue Type: Bug
> Reporter: T Jake Luciani
> Assignee: T Jake Luciani
> Priority: Minor
> Fix For: 2.1.x
>
> Attachments: lcstest.yaml
>
>
> While testing LCS I found cfstats sometimes crashes during compaction
> It looks to be related to the incremental re-opening not having metadata.
> {code}
> ----------------
> Keyspace: stresscql
> Read Count: 0
> Read Latency: NaN ms.
> Write Count: 6590571
> Write Latency: 0.026910956273743198 ms.
> Pending Flushes: 0
> Table: ycsb
> SSTable count: 69
> SSTables in each level: [67/4, 1, 0, 0, 0, 0, 0, 0, 0]
> Space used (live): 3454857914
> Space used (total): 3454857914
> Space used by snapshots (total): 0
> Off heap memory used (total): 287361
> SSTable Compression Ratio: 0.0
> error:
> /home/jake/workspace/cassandra/./bin/../data/data/stresscql/ycsb-ff399910104911e5a797a18c989fb6f2/stresscql-ycsb-tmplink-ka-125-Data.db
> -- StackTrace --
> java.lang.AssertionError:
> /home/jake/workspace/cassandra/./bin/../data/data/stresscql/ycsb-ff399910104911e5a797a18c989fb6f2/stresscql-ycsb-tmplink-ka-125-Data.db
> at
> org.apache.cassandra.io.sstable.SSTableReader.getApproximateKeyCount(SSTableReader.java:270)
> at
> org.apache.cassandra.metrics.ColumnFamilyMetrics$9.value(ColumnFamilyMetrics.java:296)
> at
> org.apache.cassandra.metrics.ColumnFamilyMetrics$9.value(ColumnFamilyMetrics.java:290)
> at
> com.yammer.metrics.reporting.JmxReporter$Gauge.getValue(JmxReporter.java:63)
> at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:483)
> at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
> at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:483)
> at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
> 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.getAttribute(PerInterface.java:83)
> at
> com.sun.jmx.mbeanserver.MBeanSupport.getAttribute(MBeanSupport.java:206)
> at
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:647)
> at
> com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:678)
> at
> javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1443)
> at
> javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
> at
> javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1307)
> at
> javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1399)
> at
> javax.management.remote.rmi.RMIConnectionImpl.getAttribute(RMIConnectionImpl.java:637)
> at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:483)
> at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323)
> at sun.rmi.transport.Transport$1.run(Transport.java:178)
> at sun.rmi.transport.Transport$1.run(Transport.java:175)
> at java.security.AccessController.doPrivileged(Native Method)
> at sun.rmi.transport.Transport.serviceCall(Transport.java:174)
> at
> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:557)
> at
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:812)
> at
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:671)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> at java.lang.Thread.run(Thread.java:745)
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)