Looks like Thrift API is not working as expected?

-Vivek




________________________________
 From: Brian O'Neill <b...@alumni.brown.edu>
To: dev@cassandra.apache.org 
Cc: Vivek Mishra <vivek.mis...@yahoo.com> 
Sent: Monday, December 17, 2012 8:12 PM
Subject: Re: Compund/Composite column names
 
FYI -- I'm still seeing this on 1.2-beta1.

If you create a table via CQL, then insert into it (via Java API) with
an incorrect number of components.  The insert works, but select *
from CQL results in a TSocket read error.

I showed this in the webinar last week, just in case people ran into
it.  It would be great to translate the ArrayIndexOutofBoundsException
from the server side into something meaningful in cqlsh to help people
diagnose the problem.  (a regular user probably doesn't have access to
the server-side logs)

You can see it at minute 41 in the video from the webinar:
http://www.youtube.com/watch?v=AdfugJxfd0o&feature=youtu.be

-brian


On Tue, Oct 9, 2012 at 9:39 AM, Jonathan Ellis <jbel...@gmail.com> wrote:
> Sounds like you're running into the keyspace drop bug.  It's "mostly" fixed
> in 1.1.5 but you might need the latest from 1.1 branch.  1.1.6 will be
> released soon with the final fix.
> On Oct 9, 2012 1:58 AM, "Vivek Mishra" <vivek.mis...@yahoo.com> wrote:
>
>>
>>
>> Ok. I am able to understand the problem now. Issue is:
>>
>> If i create a column family altercations as:
>>
>>
>> **********************************************************************************************************8
>> CREATE TABLE altercations (
>>        instigator text,
>>        started_at timestamp,
>>        ships_destroyed int,
>>        energy_used float,
>>        alliance_involvement boolean,
>>        PRIMARY KEY (instigator,started_at,ships_destroyed)
>>    );
>> /
>>    INSERT INTO altercations (instigator, started_at, ships_destroyed,
>>                              energy_used, alliance_involvement)
>>                      VALUES ('Jayne Cobb', '2012-07-23', 2, 4.6, 'false');
>>
>> *********************************************************************************************************************
>>
>> It works!
>>
>> But if i create a column family with compound primary key with 2 composite
>> column as:
>>
>>
>> *********************************************************************************************************************
>> CREATE TABLE altercations (
>>        instigator text,
>>        started_at timestamp,
>>        ships_destroyed int,
>>        energy_used float,
>>        alliance_involvement boolean,
>>        PRIMARY KEY (instigator,started_at)
>>    );
>>
>>
>> *********************************************************************************************************************
>> and Then drop this column family:
>>
>>
>> *********************************************************************************************************************
>> drop columnfamily altercations;
>>
>> *********************************************************************************************************************
>>
>> and then try to create same one with primary compound key with 3 composite
>> column:
>>
>>
>> *********************************************************************************************************************
>>
>> CREATE TABLE altercations (
>>        instigator text,
>>        started_at timestamp,
>>        ships_destroyed int,
>>        energy_used float,
>>        alliance_involvement boolean,
>>        PRIMARY KEY (instigator,started_at,ships_destroyed)
>>    );
>>
>> *********************************************************************************************************************
>>
>> it gives me error: "TSocket read 0 bytes"
>>
>> Rest, as no column family is created, so nothing onwards will work.
>>
>> Is this an issue?
>>
>> -Vivek
>>
>>
>> ________________________________
>>  From: Jonathan Ellis <jbel...@gmail.com>
>> To: dev@cassandra.apache.org; Vivek Mishra <vivek.mis...@yahoo.com>
>> Sent: Tuesday, October 9, 2012 9:08 AM
>> Subject: Re: Compund/Composite column names
>>
>> Works for me on latest 1.1 in cql3 mode.  cql2 mode gives a parse error.
>>
>> On Mon, Oct 8, 2012 at 9:18 PM, Vivek Mishra <vivek.mis...@yahoo.com>
>> wrote:
>> > Hi All,
>> >
>> > I am trying to use compound primary key column name and i am referring
>> to:
>> > http://www.datastax.com/dev/blog/whats-new-in-cql-3-0
>> >
>> >
>> > As mentioned on this example, i tried to create a column family
>> containing compound primary key (one or more) as:
>> >
>> >  CREATE TABLE altercations (
>> >        instigator text,
>> >        started_at timestamp,
>> >        ships_destroyed int,
>> >        energy_used float,
>> >        alliance_involvement boolean,
>> >        PRIMARY KEY (instigator,started_at,ships_destroyed)
>> >    );
>> >
>> > And i am getting:
>> >
>> >
>> > **********************************************************************
>> > TSocket read 0 bytes
>> > cqlsh:testcomp>
>> > **********************************************************************
>> >
>> >
>> > Then followed by insert and select statements giving me following errors:
>> >
>> >
>> ********************************************************************************************************************************************
>> >
>> > cqlsh:testcomp>    INSERT INTO altercations (instigator, started_at,
>> ships_destroyed,
>> >             ...                              energy_used,
>> alliance_involvement)
>> >             ...                      VALUES ('Jayne Cobb', '2012-07-23',
>> 2, 4.6, 'false');
>> > TSocket read 0 bytes
>> >
>> > cqlsh:testcomp> select * from altercations;
>> > Traceback (most recent call last):
>> >   File "bin/cqlsh", line 1008, in perform_statement
>> >     self.cursor.execute(statement, decoder=decoder)
>> >   File
>> "bin/../lib/cql-internal-only-1.0.10.zip/cql-1.0.10/cql/cursor.py", line
>> 117, in execute
>> >     response = self.handle_cql_execution_errors(doquery, prepared_q,
>> compress)
>> >   File
>> "bin/../lib/cql-internal-only-1.0.10.zip/cql-1.0.10/cql/cursor.py", line
>> 132, in handle_cql_execution_errors
>> >     return executor(*args, **kwargs)
>> >   File
>> "bin/../lib/cql-internal-only-1.0.10.zip/cql-1.0.10/cql/cassandra/Cassandra.py",
>> line 1583, in execute_cql_query
>> >     self.send_execute_cql_query(query, compression)
>> >   File
>> "bin/../lib/cql-internal-only-1.0.10.zip/cql-1.0.10/cql/cassandra/Cassandra.py",
>> line 1593, in send_execute_cql_query
>> >     self._oprot.trans.flush()
>> >   File
>> "bin/../lib/thrift-python-internal-only-0.7.0.zip/thrift/transport/TTransport.py",
>> line 293, in flush
>> >     self.__trans.write(buf)
>> >   File
>> "bin/../lib/thrift-python-internal-only-0.7.0.zip/thrift/transport/TSocket.py",
>> line 117, in write
>> >     plus = self.handle.send(buff)
>> > error: [Errno 32] Broken pipe
>> >
>> > cqlsh:testcomp>
>> >
>> >
>> ********************************************************************************************************************************************
>> >
>> >
>> >
>> > Any idea?
>> >
>> >
>> > -Vivek
>>
>>
>>
>> --
>> Jonathan Ellis
>> Project Chair, Apache Cassandra
>> co-founder of DataStax, the source for professional Cassandra support
>> http://www.datastax.com



-- 
Brian ONeill
Lead Architect, Health Market Science (http://healthmarketscience.com)

mobile:215.588.6024
blog: http://brianoneill.blogspot.com/
twitter: @boneill42

Reply via email to