[ https://issues.apache.org/jira/browse/CASSANDRA-5064?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13532335#comment-13532335 ]
Jonathan Ellis commented on CASSANDRA-5064: ------------------------------------------- bq. Do we agree that it doesn't do the "change maybeSwitchMemtable to unconditionally switch"? Here's the new core of switchMemtable: {code} . for (ColumnFamilyStore cfs : concatWithIndexes()) { Memtable mt = cfs.data.switchMemtable(); if ((!mt.isClean())) memtables.add(mt); } {code} bq. I see nothing that prevents flushing the same memtable multiple times. What prevents it is that DataTracker.switchMemtable is atomic and will only return a given memtable once. (So, if we have a whole bunch of threads calling forceFlush at once, we'll probably switch out a few empty ones, but that is the end of the extra work we do.) bq. for counter this is a bug Ugh, counters again. Have to think about this. bq. I also don't think using reference counting really makes this issue simpler. I do. :) We're net -120 lines of fairly tricky code. We've had multiple bugs from not dealing with switchlock correctly (CASSANDRA-3712 and the flushing code from CASSANDRA-3411, off the top of my head). bq. I'm really doubtful that changing such an important piece of code just before a release is a good idea I'll buy that. > 'Alter table' when it includes collections makes cqlsh hang > ----------------------------------------------------------- > > Key: CASSANDRA-5064 > URL: https://issues.apache.org/jira/browse/CASSANDRA-5064 > Project: Cassandra > Issue Type: Bug > Affects Versions: 1.2.0 beta 3, 1.2.0 > Environment: Ubuntu 12.04 LTS > 3.2.0-23-virtual > Reporter: Ryan McGuire > Assignee: Sylvain Lebresne > Priority: Critical > Fix For: 1.2.0 > > Attachments: 5064.txt, 5064-v2.txt > > > Having just installed 1.2.0-beta3 issue the following CQL into cqlsh: > {code} > drop keyspace test; > create keyspace test with replication = { > 'class': 'SimpleStrategy', > 'replication_factor': '1' > }; > use test; > create table users ( > user_id text PRIMARY KEY, > first_name text, > last_name text, > email_addresses set<text> > ); > alter table users add mailing_address_lines list<text>; > {code} > As soon as you issue the alter table statement cqlsh hangs, and the java > process hosting Cassandra consumes 100% of a single core's CPU. > If the alter table doesn't include a collection, it runs fine. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira