cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tyler Hobbs (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-7593) Errors when upgrading through several versions to 2.1
Date Thu, 31 Jul 2014 17:06:39 GMT

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

Tyler Hobbs commented on CASSANDRA-7593:
----------------------------------------

Let's take a step back.

Moving {{clusteringSize()}} up to Composite creates problems for CompoundComposite, as Marcus
demonstrated, because the CompoundComposite isn't capable of knowing its own clustering size.
 We would need to patch all of the places where we create CompoundComposites (which Marcus
started) in order to avoid a lot of subtle bugs in the future.

Instead of moving {{clusteringSize()}} up to the Composite class, can't we utilize the {{comparator}}
in {{ColumnNameHelper.min/maxComponents()}}?  For example, what we have now is:

{code}
    public static List<ByteBuffer> minComponents(List<ByteBuffer> minSeen, Composite
candidate, CellNameType comparator)
    {
        // For a cell name, no reason to look more than the clustering prefix
        // (and comparing the collection element would actually crash)
        int size = candidate instanceof CellName ? ((CellName)candidate).clusteringSize()
: candidate.size();

        if (minSeen.isEmpty())
            return getComponents(candidate, size);
{code}

Instead, we can do:
{code}
        int size = min(comparator.clusteringPrefixSize(), candidate.size());

        if (minSeen.isEmpty())
            return getComponents(candidate, size);
{code}

We would definitely need to do CASSANDRA-7651 along with this (especially due to CASSANDRA-5435),
but it seems like the least risky, most correct fix to me.

> 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: Tyler Hobbs
>            Priority: Critical
>             Fix For: 2.1.0
>
>         Attachments: 0001-keep-clusteringSize-in-CompoundComposite.patch, 7593.txt
>
>
> 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