[ https://issues.apache.org/jira/browse/CASSANDRA-7437?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Philip Thompson updated CASSANDRA-7437: --------------------------------------- Attachment: 7437.log 7437_test.py I'm running into the error added by this patch: {code} ['ERROR [MigrationStage:1] 2014-08-19 10:44:41,657 CommitLogSegmentManager.java:317 - Failed to force-recycle all segments; at least one segment is still in use with dirty CFs.\n'] {code} I've attached a very simple test that mimics how I reproduced the issue as well as the log from the node in question. > Ensure writes have completed after dropping a table, before recycling commit > log segments (CASSANDRA-7437) > ----------------------------------------------------------------------------------------------------------- > > Key: CASSANDRA-7437 > URL: https://issues.apache.org/jira/browse/CASSANDRA-7437 > Project: Cassandra > Issue Type: Bug > Components: Core > Reporter: Benedict > Assignee: Benedict > Priority: Minor > Fix For: 2.1 rc3 > > Attachments: 7437.log, 7437_test.py > > > I've noticed on unit test output that there are still assertions being raised > here, so I've taken a torch to the code path to make damned certain it cannot > happen in future > # We now wait for all running reads on a column family or writes on the > keyspace during a dropCf call > # We wait for all appends to the prior commit log segments before recycling > them > # We pass the list of dropped Cfs into the CL.forceRecycle call so that they > can be markedClean definitely after they have been marked finished > # Finally, to prevent any possibility of this still happening causing any > negative consequences, I've suppressed the assertion in favour of an error > log message, as the assertion would break correct program flow for the drop > and potentially result in undefined behaviour > -(in actuality there is the slightest possibility still of a race condition > on read of a secondary index that causes a repair driven write, but this is a > really tiny race window, as I force wait for all reads after unlinking the > CF, so it would have to be a read that grabbed the CFS reference before it > was dropped, but hadn't quite started its read op yet).- In fact this is also > safe, as these modifications all grab a write op from the Keyspace, which has > to happen before they get the CFS, and also because we drop the data before > waiting for reads to finish on the CFS. -- This message was sent by Atlassian JIRA (v6.2#6252)