[ 
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.

Reply via email to