Good. Should be easy to fix then. :) Can you post a program that reproduces this against the demo config?
thanks, -Jonathan On Thu, Oct 8, 2009 at 8:45 PM, Ramzi Rabah <[email protected]> wrote: > Yeah I wiped out my commitLog files and data files and restarted the > server, and I still ran into this problem. > > Thanks > Ray > > On Thu, Oct 8, 2009 at 6:37 PM, Jonathan Ellis <[email protected]> wrote: >> Yes, that's a bug all right. >> >> Is this reproducible when you start with an empty database? >> >> On Thu, Oct 8, 2009 at 7:53 PM, Ramzi Rabah <[email protected]> wrote: >>> Hi Jonathan thanks a lot for the quick response :) here is the error >>> in the server log >>> >>> DEBUG [pool-1-thread-4] 2009-10-08 20:24:17,428 StorageProxy.java >>> (line 515) weakreadlocal reading >>> SliceFromReadCommand(table='Keyspace1', key='user1', >>> column_parent='QueryPath(columnFamilyName='Datastore', >>> superColumnName='[...@1a5e65f', columnName='null')', start='', >>> finish='', reversed=false, count=3) >>> ERROR [pool-1-thread-4] 2009-10-08 20:24:17,430 Cassandra.java (line >>> 657) Internal error processing get_slice >>> java.lang.AssertionError >>> at >>> org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1347) >>> at >>> org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1325) >>> at org.apache.cassandra.db.Table.getRow(Table.java:590) >>> at >>> org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:59) >>> at >>> org.apache.cassandra.service.StorageProxy.weakReadLocal(StorageProxy.java:518) >>> at >>> org.apache.cassandra.service.StorageProxy.readProtocol(StorageProxy.java:310) >>> at >>> org.apache.cassandra.service.CassandraServer.readColumnFamily(CassandraServer.java:99) >>> at >>> org.apache.cassandra.service.CassandraServer.getSlice(CassandraServer.java:180) >>> at >>> org.apache.cassandra.service.CassandraServer.multigetSliceInternal(CassandraServer.java:249) >>> at >>> org.apache.cassandra.service.CassandraServer.get_slice(CassandraServer.java:218) >>> at >>> org.apache.cassandra.service.Cassandra$Processor$get_slice.process(Cassandra.java:651) >>> at >>> org.apache.cassandra.service.Cassandra$Processor.process(Cassandra.java:609) >>> at >>> org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:253) >>> at >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) >>> at java.lang.Thread.run(Thread.java:636) >>> >>> On Thu, Oct 8, 2009 at 5:41 PM, Jonathan Ellis <[email protected]> wrote: >>>> "Internal error" usually means you found a bug. Are there any >>>> exceptions in the server log? >>>> >>>> On Thu, Oct 8, 2009 at 7:33 PM, Ramzi Rabah <[email protected]> wrote: >>>>> Hello all, >>>>> >>>>> I am trying to test Cassandra for deploying it in production in our >>>>> company, and I am very pleased with the performance of the >>>>> reads/writes on Columns. I did run into an issue with the API though >>>>> while trying to play with supercolumns. Here is my code: >>>>> >>>>> // Creating a supercolumn with name = "key" and columns ("value", >>>>> "created"). >>>>> long now = System.currentTimeMillis(); >>>>> byte[] keyAsBytes = key.getBytes(); >>>>> >>>>> ColumnOrSuperColumn colOrSuperCol = new ColumnOrSuperColumn(); >>>>> SuperColumn superCol = new SuperColumn(); >>>>> colOrSuperCol.setSuper_column(superCol); >>>>> superCol.setName(keyAsBytes); >>>>> List<Column> cols = new ArrayList<Column>(); >>>>> >>>>> // first the key/value pair >>>>> Column col = new Column(); >>>>> col.setName("value".getBytes()); >>>>> col.setValue(value); >>>>> cols.add(col); >>>>> >>>>> // then the time created >>>>> col = new Column(); >>>>> col.setName("created".getBytes()); >>>>> col.setValue((now + "").getBytes()); >>>>> cols.add(col); >>>>> >>>>> superCol.setColumns(cols); >>>>> >>>>> Map<String, List<ColumnOrSuperColumn>> map = new >>>>> HashMap<String, List<ColumnOrSuperColumn>>(); >>>>> List<ColumnOrSuperColumn> list = new >>>>> ArrayList<ColumnOrSuperColumn>(); >>>>> list.add(colOrSuperCol); >>>>> map.put(COLUMN_FAMILY_NAME, list); >>>>> >>>>> client.batch_insert(KEYSPACE_NAME, key, map, ConsistencyLevel.ONE); >>>>> >>>>> >>>>> // The GET of the supercolumn >>>>> SlicePredicate predicate = new SlicePredicate(null, new >>>>> SliceRange(new byte >>>>> [0], new byte[0], false, 2)); >>>>> ColumnParent parent = new ColumnParent(COLUMN_FAMILY_NAME, >>>>> key.getBytes()); >>>>> >>>>> List<ColumnOrSuperColumn> columns = null; >>>>> columns = client.get_slice(KEYSPACE_NAME, key, >>>>> parent, predicate, ConsistencyLevel.ONE); >>>>> >>>>> >>>>> // delete the supercolumn >>>>> client.remove(KEYSPACE_NAME, key,new >>>>> ColumnPath(COLUMN_FAMILY_NAME, null, null), >>>>> System.currentTimeMillis(),ConsistencyLevel.ONE); >>>>> >>>>> // Do the get again >>>>> >>>>> When I try to delete the super column and then I try to read it again, >>>>> I get an exception thrown by cassandra >>>>> >>>>> org.apache.thrift.TApplicationException: Internal error processing >>>>> get_slice >>>>> at >>>>> org.apache.thrift.TApplicationException.read(TApplicationException.java:107) >>>>> at >>>>> org.apache.cassandra.service.Cassandra$Client.recv_get_slice(Cassandra.java:171) >>>>> at >>>>> org.apache.cassandra.service.Cassandra$Client.get_slice(Cassandra.java:150) >>>>> at >>>>> com.playdom.cassandra.datastore.CassandraDataStore.testGet(CassandraDataStore.java:233) >>>>> at >>>>> com.playdom.cassandra.test.TestCassandraDataStore.testSetAndGetTrial(TestCassandraDataStore.java:58) >>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>> at >>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >>>>> at >>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>>>> at java.lang.reflect.Method.invoke(Method.java:597) >>>>> at junit.framework.TestCase.runTest(TestCase.java:168) >>>>> at junit.framework.TestCase.runBare(TestCase.java:134) >>>>> at junit.framework.TestResult$1.protect(TestResult.java:110) >>>>> at junit.framework.TestResult.runProtected(TestResult.java:128) >>>>> at junit.framework.TestResult.run(TestResult.java:113) >>>>> at junit.framework.TestCase.run(TestCase.java:124) >>>>> at junit.framework.TestSuite.runTest(TestSuite.java:232) >>>>> at junit.framework.TestSuite.run(TestSuite.java:227) >>>>> at junit.textui.TestRunner.doRun(TestRunner.java:116) >>>>> at >>>>> com.intellij.rt.execution.junit.IdeaTestRunner.doRun(IdeaTestRunner.java:94) >>>>> at junit.textui.TestRunner.doRun(TestRunner.java:109) >>>>> at >>>>> com.intellij.rt.execution.junit.IdeaTestRunner.startRunnerWithArgs(IdeaTestRunner.java:22) >>>>> at >>>>> com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:118) >>>>> at >>>>> com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:40) >>>>> >>>>> I was expecting a NotFoundException() since I thought the read will >>>>> not find anything. Also anytime I try to rerun this after the delete I >>>>> always get an exception in the reads. >>>>> >>>>> Am I doing something seriously wrong? Thanks a lot for your help >>>>> >>>>> Ray >>>>> >>>> >>> >> >
