cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jonathan Shook <jsh...@gmail.com>
Subject Re: CRUD test
Date Fri, 23 Jul 2010 20:33:52 GMT
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.tsvinev@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 <jshook@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.Minearo@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.tsvinev@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" <zodiaczx6@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.tsvinev@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.
>> >
>> >
>
>

Mime
View raw message