I'm puzzled because code does not even check for LOCAL_QUORUM before throwing exception. Indeed I did not configure NetworkTopologyStrategy. Are you saying that it works after configuring it?
On Tue, Apr 19, 2011 at 6:04 PM, William Oberman <ober...@civicscience.com> wrote: > I had a similar error today when I tried using LOCAL_QUORUM without having a > properly configured NetworkTopologyStrategy. QUORUM worked fine however. > will > > On Tue, Apr 19, 2011 at 8:52 PM, Oleg Tsvinev <oleg.tsvi...@gmail.com> > wrote: >> >> Earlier I've posted the same message to a hector-users list. >> >> Guys, >> >> I'm a bit puzzled today. I'm using just released Hector 0.7.0-29 >> (thank you, Nate!) and Cassandra 0.7.4 and getting the exception >> below, marked as (1) Exception. When I dig to Cassandra source code >> below, marked as (2) Cassandra source, I see that there's no check for >> LOCAL_QUORUM. I also see that (3) cassandra.thrift defines >> LOCAL_QUORUM as enum value 3 and in debugger, I see that LOCAL_QUORUM >> is a valid enum value. >> >> My question is, how is it possible to use LOCAL_QUORUM if Cassandra >> code throws exception when it sees it? Is it a bad merge or something? >> I know it worked before, from looking at >> https://issues.apache.org/jira/browse/CASSANDRA-2254 >> >> :-\ >> >> (1) Exception: >> >> 2011-04-19 14:57:33,550 [pool-2-thread-49] ERROR >> org.apache.cassandra.thrift.Cassandra$Processor - Internal error >> processing batch_mutate >> java.lang.UnsupportedOperationException: invalid consistency level: >> LOCAL_QUORUM >> at >> org.apache.cassandra.service.WriteResponseHandler.determineBlockFor(WriteResponseHandler.java:99) >> at >> org.apache.cassandra.service.WriteResponseHandler.<init>(WriteResponseHandler.java:48) >> at >> org.apache.cassandra.service.WriteResponseHandler.create(WriteResponseHandler.java:61) >> at >> org.apache.cassandra.locator.AbstractReplicationStrategy.getWriteResponseHandler(AbstractReplicationStrategy.java:127) >> at >> org.apache.cassandra.service.StorageProxy.mutate(StorageProxy.java:115) >> at >> org.apache.cassandra.thrift.CassandraServer.doInsert(CassandraServer.java:415) >> at >> org.apache.cassandra.thrift.CassandraServer.batch_mutate(CassandraServer.java:388) >> at >> org.apache.cassandra.thrift.Cassandra$Processor$batch_mutate.process(Cassandra.java:3036) >> at >> org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:2555) >> at >> org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:206) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) >> at java.lang.Thread.run(Thread.java:662) >> >> (2) Cassandra source (line 99 is throw statement) >> >> protected int determineBlockFor(String table) >> { >> int blockFor = 0; >> switch (consistencyLevel) >> { >> case ONE: >> blockFor = 1; >> break; >> case ANY: >> blockFor = 1; >> break; >> case TWO: >> blockFor = 2; >> break; >> case THREE: >> blockFor = 3; >> break; >> case QUORUM: >> blockFor = (writeEndpoints.size() / 2) + 1; >> break; >> case ALL: >> blockFor = writeEndpoints.size(); >> break; >> default: >> throw new UnsupportedOperationException("invalid >> consistency level: " + consistencyLevel.toString()); >> } >> // at most one node per range can bootstrap at a time, and >> these will be added to the write until >> // bootstrap finishes (at which point we no longer need to >> write to the old ones). >> assert 1 <= blockFor && blockFor <= 2 * >> Table.open(table).getReplicationStrategy().getReplicationFactor() >> : String.format("invalid response count %d for replication >> factor %d", >> blockFor, >> Table.open(table).getReplicationStrategy().getReplicationFactor()); >> return blockFor; >> } >> >> (3) cassandra.thrift: >> >> enum ConsistencyLevel { >> ONE = 1, >> QUORUM = 2, >> LOCAL_QUORUM = 3, >> EACH_QUORUM = 4, >> ALL = 5, >> ANY = 6, >> TWO = 7, >> THREE = 8, >> } > > > > -- > Will Oberman > Civic Science, Inc. > 3030 Penn Avenue., First Floor > Pittsburgh, PA 15201 > (M) 412-480-7835 > (E) ober...@civicscience.com >