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. >> > >> > > >