cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jonathan Ellis (JIRA)" <j...@apache.org>
Subject [jira] Updated: (CASSANDRA-1330) AssertionError: discard at CommitLogContext(file=...) is not after last flush at ...
Date Fri, 01 Oct 2010 17:26:35 GMT

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

Jonathan Ellis updated CASSANDRA-1330:
--------------------------------------

    Attachment: 1330.txt

This really is essentially the same scenario as CASSANDRA-936.  (See my 3rd-from-the-bottom
comment for background and a diagram.)

The part my analysis in 936 is missing is that the CL holds mutations from many columnfamilies,
so the position from the first turnOn in a given CF may be arbitrarily high depending on how
many mutations happened to other CFs first.  (Similarly, the flush context may also be arbitrarily
high, although it's more likely to be low because this scenario can't occur once each CF has
been flushed once in the new segment.)

Given the turnOn-for-first-write-to-CF-in-new-segment behavior (which is what keeps us from
having to replay the entirety of any not-completely-flushed segement), I don't think we can
usefully assert anything about the flush context vs the dirty position.  This patch removes
it -- and changes CLS.lastFlushedAt to CLS.cfDirtiedAt (which is what it has already been
renamed to in 0.7) to make it more clear that flushing isn't the only thing that affects the
header positions.

> AssertionError: discard at CommitLogContext(file=...) is not after last flush at  ...
> -------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-1330
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1330
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.6.3
>         Environment: Java 1.6 / Linux
>            Reporter: Viliam Holub
>            Assignee: Matthew F. Dennis
>             Fix For: 0.6.6, 0.7.0
>
>         Attachments: 1330.txt
>
>
> Looks related to CASSANDRA-936?
> ERROR [MEMTABLE-POST-FLUSHER:1] 2010-07-28 11:39:36,909 CassandraDaemon.java (line 83)
Uncaught exception in thread Thread[MEMTABLE-POST-FLUSHER:1,5,main]
> java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.lang.RuntimeException:
java.util.concurrent.ExecutionException: java.lang.AssertionError: discard at CommitLogContext(file='/srv/cassandra/commitlog/CommitLog-1280331567364.log',
position=181) is not after last flush at 563
>         at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
>         at java.util.concurrent.FutureTask.get(FutureTask.java:111)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.afterExecute(DebuggableThreadPoolExecutor.java:86)
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1118)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>         at java.lang.Thread.run(Thread.java:636)
> Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.util.concurrent.ExecutionException:
java.lang.AssertionError: discard at CommitLogContext(file='/srv/cassandra/commitlog/CommitLog-1280331567364.log',
position=181) is not after last flush at 563
>         at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:34)
>         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)
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>         ... 2 more
> Caused by: java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.AssertionError:
discard at CommitLogContext(file='/srv/cassandra/commitlog/CommitLog-1280331567364.log', position=181)
is not after last flush at 563
>         at org.apache.cassandra.db.commitlog.CommitLog.discardCompletedSegments(CommitLog.java:373)
>         at org.apache.cassandra.db.ColumnFamilyStore$1.runMayThrow(ColumnFamilyStore.java:371)
>         at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:30)
>         ... 6 more
> Caused by: java.util.concurrent.ExecutionException: java.lang.AssertionError: discard
at CommitLogContext(file='/srv/cassandra/commitlog/CommitLog-1280331567364.log', position=181)
is not after last flush at 563
>         at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
>         at java.util.concurrent.FutureTask.get(FutureTask.java:111)
>         at org.apache.cassandra.db.commitlog.CommitLog.discardCompletedSegments(CommitLog.java:365)
>         ... 8 more
> Caused by: java.lang.AssertionError: discard at CommitLogContext(file='/srv/cassandra/commitlog/CommitLog-1280331567364.log',
position=181) is not after last flush at 563
>         at org.apache.cassandra.db.commitlog.CommitLog.discardCompletedSegmentsInternal(CommitLog.java:394)
>         at org.apache.cassandra.db.commitlog.CommitLog.access$300(CommitLog.java:70)
>         at org.apache.cassandra.db.commitlog.CommitLog$6.call(CommitLog.java:359)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:166)
>         at org.apache.cassandra.db.commitlog.PeriodicCommitLogExecutorService$1.runMayThrow(PeriodicCommitLogExecutorService.java:52)
>         at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:30)
>         ... 1 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message