The Model Should look like:
Super2 = { hotel: { Best Western: {name: "Best Western of SF"} Econolodge: {name: "Econolodge of SF"} } } Are the CRUD Operations not referencing this correctly? -----Original Message----- From: Jonathan Shook [mailto:jsh...@gmail.com] Sent: Friday, July 23, 2010 1:34 PM To: user@cassandra.apache.org Subject: Re: CRUD test There seem to be data consistency bugs in the test. Are "name" and "hotel" being used in a pair-wise way? Specifically, the first test is using creating one and checking for the other. On Fri, Jul 23, 2010 at 2:46 PM, Oleg Tsvinev <oleg.tsvi...@gmail.com> wrote: > Johathan, > I followed your suggestion. Unfortunately, CRUD test still does not > work for me. Can you provide a simplest CRUD test possible that works? > On Fri, Jul 23, 2010 at 10:59 AM, Jonathan Shook <jsh...@gmail.com> wrote: >> >> I suspect that it is still your timestamps. >> You can verify this with a fake timestamp generator that is simply >> incremented on each getTimestamp(). >> >> 1 millisecond is a long time for code that is wrapped tightly in a >> test. You are likely using the same logical time stamp for multiple >> operations. >> >> >> On Thu, Jul 22, 2010 at 6:29 PM, Peter Minearo >> <peter.mine...@reardencommerce.com> wrote: >> > I am able to reproduce his problem. If you take the default >> > storage-conf.xml file and utilize the "Super2" ColumnFamily with >> > the code below. You will see that the data is not getting created >> > once you run the delete. It seems to not allow you to create data >> > via Thrift. HOWEVER, data can be created via the command line tool. >> > >> > import java.io.UnsupportedEncodingException; >> > import java.util.List; >> > >> > import org.apache.cassandra.thrift.Cassandra; >> > import org.apache.cassandra.thrift.Column; >> > import org.apache.cassandra.thrift.ColumnOrSuperColumn; >> > import org.apache.cassandra.thrift.ColumnParent; >> > import org.apache.cassandra.thrift.ColumnPath; >> > import org.apache.cassandra.thrift.ConsistencyLevel; >> > import org.apache.cassandra.thrift.InvalidRequestException; >> > import org.apache.cassandra.thrift.NotFoundException; >> > import org.apache.cassandra.thrift.SlicePredicate; >> > import org.apache.cassandra.thrift.SliceRange; >> > import org.apache.cassandra.thrift.SuperColumn; >> > import org.apache.cassandra.thrift.TimedOutException; >> > import org.apache.cassandra.thrift.UnavailableException; >> > import org.apache.thrift.TException; import >> > org.apache.thrift.protocol.TBinaryProtocol; >> > import org.apache.thrift.protocol.TProtocol; >> > import org.apache.thrift.transport.TSocket; >> > import org.apache.thrift.transport.TTransport; >> > >> > >> > public class CrudTest { >> > >> > >> > private static final String KEYSPACE = "Keyspace1"; >> > >> > >> > public static void main(String[] args) { >> > CrudTest client = new CrudTest(); >> > >> > try { >> > client.run(); >> > } catch (Exception e) { >> > e.printStackTrace(); >> > } >> > >> > } >> > >> > >> > public void run() throws TException, >> > InvalidRequestException, UnavailableException, >> > UnsupportedEncodingException, NotFoundException, TimedOutException >> > { >> > TTransport tr = new TSocket("localhost", 9160); >> > TProtocol proto = new TBinaryProtocol(tr); >> > Cassandra.Client client = new >> > Cassandra.Client(proto); >> > tr.open(); >> > >> > System.out.println("******** CREATING DATA >> > *********"); >> > createData(client); >> > getData(client); >> > System.out.println(); >> > System.out.println("******** DELETING DATA >> > *********"); >> > deleteData(client); >> > getData(client); >> > System.out.println(); >> > System.out.println("******** CREATING DATA >> > *********"); >> > createData(client); >> > getData(client); >> > >> > tr.close(); >> > } >> > >> > >> > private void createData(Cassandra.Client client) throws >> > InvalidRequestException, UnavailableException, TimedOutException, >> > TException { >> > ColumnPath cp1 = new ColumnPath("Super2"); >> > cp1.setSuper_column("hotel".getBytes()); >> > cp1.setColumn("Best Western".getBytes()); >> > >> > >> > client.insert(KEYSPACE, >> > "name", >> > cp1, >> > "Best Western of SF".getBytes(), >> > System.currentTimeMillis(), >> > ConsistencyLevel.ALL); >> > >> > ColumnPath cp2 = new ColumnPath("Super2"); >> > cp2.setSuper_column("hotel".getBytes()); >> > cp2.setColumn("Econolodge".getBytes()); >> > >> > client.insert(KEYSPACE, >> > "name", >> > cp2, >> > "Econolodge of SF".getBytes(), >> > System.currentTimeMillis(), >> > ConsistencyLevel.ALL); >> > >> > } >> > >> > >> > private void deleteData(Cassandra.Client client) throws >> > InvalidRequestException, UnavailableException, TimedOutException, >> > TException { >> > >> > client.remove(KEYSPACE, >> > "hotel", >> > new ColumnPath("Super2"), >> > System.currentTimeMillis(), >> > ConsistencyLevel.ONE); >> > >> > } >> > >> > >> > private void getData(Cassandra.Client client) throws >> > InvalidRequestException, UnavailableException, TimedOutException, >> > TException { >> > SliceRange sliceRange = new SliceRange(); >> > sliceRange.setStart(new byte[] {}); >> > sliceRange.setFinish(new byte[] {}); >> > >> > SlicePredicate slicePredicate = new >> > SlicePredicate(); >> > slicePredicate.setSlice_range(sliceRange); >> > >> > getData(client, slicePredicate); >> > } >> > >> > >> > private void getData(Cassandra.Client client, SlicePredicate >> > slicePredicate) throws InvalidRequestException, >> > UnavailableException, TimedOutException, TException { >> > List<ColumnOrSuperColumn> coscList = >> > client.get_slice(KEYSPACE, "hotel", new ColumnParent("Super2"), >> > slicePredicate, ConsistencyLevel.ALL); >> > >> > if (coscList.isEmpty()) { >> > System.out.println("Column Or Super Column >> > is EMPTY"); >> > } >> > >> > for (ColumnOrSuperColumn cosc: coscList) { >> > >> > if (cosc == null) { >> > System.out.println("NULL RETURN >> > VALUE"); >> > } >> > >> > SuperColumn superColumn = >> > cosc.getSuper_column(); >> > >> > if (superColumn == null) { >> > System.out.println("Super Column is >> > NULL"); >> > } >> > else { >> > showSuperColumnInfo(superColumn); >> > } >> > >> > } >> > >> > } >> > >> > >> > private void showSuperColumnInfo(SuperColumn superColumn) { >> > System.out.println("######## Super Columns >> > ###########"); >> > System.out.println("Super Column Name = " + new >> > String(superColumn.getName())); >> > List<Column> columnList = superColumn.getColumns(); >> > >> > System.out.println("--------- Start Columns >> > -----------"); >> > for (Column column: columnList) { >> > System.out.println("Column Name = " + new >> > String(column.getName())); >> > System.out.println("Column Value = " + new >> > String(column.getValue())); >> > } >> > System.out.println("--------- End Columns >> > -----------"); >> > >> > System.out.println("##################################"); >> > } >> > >> > >> > } >> > >> > >> > >> > >> > -----Original Message----- >> > From: Oleg Tsvinev [mailto:oleg.tsvi...@gmail.com] >> > Sent: Thu 7/22/2010 1:56 PM >> > To: user@cassandra.apache.org >> > Subject: Re: CRUD test >> > >> > Yes, and that was the issue. But now after I delete a row from >> > cassandra-cli, I cannot insert anything back with my code. Insert >> > code works does not throw any exceptions but when I read just >> > inserted columns I get NotFoundException at the last line: >> > >> > client = borrowClient(); >> > Keyspace keyspace = client.getKeyspace(KEYSPACE, >> > CONSISTENCY_LEVEL); >> > ColumnPath cp = new ColumnPath(application); >> > cp.setSuper_column(uuid.getBytes()); >> > SuperColumn sc = keyspace.getSuperColumn(category, cp); >> > >> > It makes me think that once I remove supercolumn it cannot be >> > created again. >> > >> > >> > On Jul 22, 2010 1:13 AM, "Colin Vipurs" <zodiac...@gmail.com> wrote: >> > >> > Have you checked the timestamp you're using for the subsequent >> > inserts is higher than that used in the delete? >> > >> > >> > On Thu, Jul 22, 2010 at 2:29 AM, Oleg Tsvinev >> > <oleg.tsvi...@gmail.com> >> > wrote: >> >> Hi there, >> >> I'm try... >> > -- >> > Maybe she awoke to see the roommate's boyfriend swinging from the >> > chandelier wearing a boar's head. >> > >> > Something which you, I, and everyone else would call "Tuesday", of >> > course. >> > >> > > >