cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Marcus Eriksson (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-7593) Errors when upgrading through several versions to 2.1
Date Fri, 25 Jul 2014 07:35:39 GMT

    [ https://issues.apache.org/jira/browse/CASSANDRA-7593?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14074163#comment-14074163
] 

Marcus Eriksson commented on CASSANDRA-7593:
--------------------------------------------

Think I'm getting to the bottom of this now

Seems it is a matter of how we store/deserialize RangeTombstones in 2.0 vs 2.1;

If I, in 2.0 store a RT like this, by itself in an sstable;
{code}
update p set tokens=null where peer = '127.0.0.4' ;
{code}
schema is:
{code}
CREATE TABLE aa.p (
    peer inet PRIMARY KEY,
    data_center text,
    host_id uuid,
    preferred_ip inet,
    rack text,
    release_version text,
    rpc_address inet,
    schema_version uuid,
    tokens set<text>
)
{code}
And then deserialize that, I get no EOC for RT.min, but i get EOC.end in RT.max

If i store the same tombstone in 2.1, i get EOC.start for RT.min and EOC.end for RT.max

This shows itself when we deserialize the 2.0-RT in 2.1 since we get a CompoundSparseCellName
for RT.min and a BoundedComposite for RT.max and that breaks the collection of min/max column
names since the CSCN is "empty" and no columns will be collected.

Could we assume EOC.START for RT.min in 2.1 when deserializing old sstables?

There is also a small bug when upgrading from 1.2 to 2.0, but it seems safe, in 1.2 we store
a row marker with the RT, in 2.0 we don't, so the row marker looks like a standard row which
is included in the min/max collection (as a min column name). But this is afaict not dangerous
since we will only include more sstable than we needed to

> Errors when upgrading through several versions to 2.1
> -----------------------------------------------------
>
>                 Key: CASSANDRA-7593
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-7593
>             Project: Cassandra
>          Issue Type: Bug
>         Environment: java 1.7
>            Reporter: Russ Hatch
>            Assignee: Marcus Eriksson
>            Priority: Critical
>             Fix For: 2.1.0
>
>
> I'm seeing two different errors cropping up in the dtest which upgrades a cluster through
several versions.
> This is the more common error:
> {noformat}
> ERROR [GossipStage:10] 2014-07-22 13:14:30,028 CassandraDaemon.java:168 - Exception in
thread Thread[GossipStage:10,5,main]
> java.lang.AssertionError: null
>         at org.apache.cassandra.db.filter.SliceQueryFilter.shouldInclude(SliceQueryFilter.java:347)
~[main/:na]
>         at org.apache.cassandra.db.filter.QueryFilter.shouldInclude(QueryFilter.java:249)
~[main/:na]
>         at org.apache.cassandra.db.CollationController.collectAllData(CollationController.java:249)
~[main/:na]
>         at org.apache.cassandra.db.CollationController.getTopLevelColumns(CollationController.java:60)
~[main/:na]
>         at org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyStore.java:1873)
~[main/:na]
>         at org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1681)
~[main/:na]
>         at org.apache.cassandra.db.Keyspace.getRow(Keyspace.java:345) ~[main/:na]
>         at org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:59)
~[main/:na]
>         at org.apache.cassandra.cql3.statements.SelectStatement.readLocally(SelectStatement.java:293)
~[main/:na]
>         at org.apache.cassandra.cql3.statements.SelectStatement.executeInternal(SelectStatement.java:302)
~[main/:na]
>         at org.apache.cassandra.cql3.statements.SelectStatement.executeInternal(SelectStatement.java:60)
~[main/:na]
>         at org.apache.cassandra.cql3.QueryProcessor.executeInternal(QueryProcessor.java:263)
~[main/:na]
>         at org.apache.cassandra.db.SystemKeyspace.getPreferredIP(SystemKeyspace.java:514)
~[main/:na]
>         at org.apache.cassandra.net.OutboundTcpConnectionPool.<init>(OutboundTcpConnectionPool.java:51)
~[main/:na]
>         at org.apache.cassandra.net.MessagingService.getConnectionPool(MessagingService.java:522)
~[main/:na]
>         at org.apache.cassandra.net.MessagingService.getConnection(MessagingService.java:536)
~[main/:na]
>         at org.apache.cassandra.net.MessagingService.sendOneWay(MessagingService.java:689)
~[main/:na]
>         at org.apache.cassandra.net.MessagingService.sendReply(MessagingService.java:663)
~[main/:na]
>         at org.apache.cassandra.service.EchoVerbHandler.doVerb(EchoVerbHandler.java:40)
~[main/:na]
>         at org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:62)
~[main/:na]
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
~[na:1.7.0_60]
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
~[na:1.7.0_60]
>         at java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_60]
> {noformat}
> The same test sometimes fails with this exception instead:
> {noformat}
> ERROR [CompactionExecutor:4] 2014-07-22 16:18:21,008 CassandraDaemon.java:168 - Exception
in thread Thread[CompactionExecutor:4,1,RMI Runtime]
> java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask@7059d3e9
rejected from org.apache.cassandra.concurrent.DebuggableScheduledThreadPoolExecutor@108f1504[Terminated,
pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 95]
>         at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2048)
~[na:1.7.0_60]
>         at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:821)
~[na:1.7.0_60]
>         at java.util.concurrent.ScheduledThreadPoolExecutor.delayedExecute(ScheduledThreadPoolExecutor.java:325)
~[na:1.7.0_60]
>         at java.util.concurrent.ScheduledThreadPoolExecutor.schedule(ScheduledThreadPoolExecutor.java:530)
~[na:1.7.0_60]
>         at java.util.concurrent.ScheduledThreadPoolExecutor.execute(ScheduledThreadPoolExecutor.java:619)
~[na:1.7.0_60]
>         at org.apache.cassandra.io.sstable.SSTableReader.scheduleTidy(SSTableReader.java:628)
~[main/:na]
>         at org.apache.cassandra.io.sstable.SSTableReader.tidy(SSTableReader.java:609)
~[main/:na]
>         at org.apache.cassandra.io.sstable.SSTableReader.releaseReference(SSTableReader.java:1596)
~[main/:na]
>         at org.apache.cassandra.db.DataTracker.replaceReaders(DataTracker.java:354) ~[main/:na]
>         at org.apache.cassandra.io.sstable.SSTableRewriter.abort(SSTableRewriter.java:200)
~[main/:na]
>         at org.apache.cassandra.db.compaction.CompactionTask.runWith(CompactionTask.java:192)
~[main/:na]
>         at org.apache.cassandra.io.util.DiskAwareRunnable.runMayThrow(DiskAwareRunnable.java:48)
~[main/:na]
>         at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28) ~[main/:na]
>         at org.apache.cassandra.db.compaction.CompactionTask.executeInternal(CompactionTask.java:74)
~[main/:na]
>         at org.apache.cassandra.db.compaction.AbstractCompactionTask.execute(AbstractCompactionTask.java:59)
~[main/:na]
>         at org.apache.cassandra.db.compaction.CompactionManager$BackgroundCompactionTask.run(CompactionManager.java:236)
~[main/:na]
>         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) ~[na:1.7.0_60]
>         at java.util.concurrent.FutureTask.run(FutureTask.java:262) ~[na:1.7.0_60]
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
~[na:1.7.0_60]
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[na:1.7.0_60]
>         at java.lang.Thread.run(Thread.java:745) [na:1.7.0_60]
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message