incubator-cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Krishna Chaitanya <bnsk1990r...@gmail.com>
Subject Re: Multiple writers writing to a cassandra node...
Date Mon, 09 Dec 2013 03:21:55 GMT
Fixed the bug. One of the clients was trying to drop a context to which
another client was writing and this was causing the exception.

Thanks.
On Dec 8, 2013 11:31 PM, "Aaron Morton" <aaron@thelastpickle.com> wrote:

> IllegalRequestException does not existing in the server code in version
> 2.0. Is this thrown by the client ?
>
> InvalidRequestException is thrown in a number of places.
>
> Check you are using the client correctly.
>
> cheers
>
> -----------------
> Aaron Morton
> New Zealand
> @aaronmorton
>
> Co-Founder & Principal Consultant
> Apache Cassandra Consulting
> http://www.thelastpickle.com
>
> On 2/12/2013, at 3:33 am, Krishna Chaitanya <bnsk1990rulz@gmail.com>
> wrote:
>
> Hi,
>
> The exception occurs on the clients. The server is fine. FYI, I dont do
> any reads, only writes to cassandra. I re-run the experiment everytime
> after dropping all the created columnfamilies and key spaces.
>
> Thanks...
>
>
> On Sun, Dec 1, 2013 at 4:57 AM, Krishna Chaitanya <bnsk1990rulz@gmail.com>wrote:
>
>> Hi,
>>         Thanks for the reply Aaron... There is no error stack! Just a
>> single exception which says, "terminate called after
>> IllegalRequestException what(): Default TException. When I try to send the
>> same amount of data from a single node to a single cassandra node, it works
>> fine. But, when I split this data and send from multiple nodes to a single
>> node, it results in this exception. I'm trying to run the same
>> program(stores data) from multiple nodes to write to a single cassandra
>> node. What all are the possible reasons for this exception? I don't think
>> its the load, since if I send the same amount of data from a single node,
>> it works fine. Is this correct?
>> I am giving below the cassandra related code of my program. This same
>> program should run on multiple nodes, but its not. I'm feeling I'm doing
>> something fundamentally wrong since I'm aware that it's possible to store
>> to a single cassandra node from multiple sources without using any
>> locks(Locking isn't required right?). Here is the cassandra related code...
>>
>>   char mycassa_host[20];
>>   int mycassa_port(9160);
>>   const char *password("");
>>   const char *table_name("ovs_netflow_table");
>>   const char *context("ntopng_data");
>>   QtCassandra::QCassandra mycassa;
>>   int j;
>>   char str[1500];
>>
>>
>>   //prompt user to enter the ip of the cassandra node...
>>   qDebug()<< "Please enter the ip of the cassandra host: \n" ;
>>   fscanf(stdin,"%s", mycassa_host);
>>              qDebug() << "using host:port:: "<<mycassa_host <<
"and
>> port:9160\n" ;
>>
>>    if(!mycassa.connect(mycassa_host,mycassa_port,password))
>> //connecting to the cassandra cluster...
>>    {
>>         qDebug()<<"\nSorry couldnt connect to the db\n";
>>         exit(1);
>>    }
>>
>>     qDebug() << "Working on Cassandra Cluster Named" <<
>> mycassa.clusterName();
>>     qDebug() << "Working on Cassandra Protocol Version" <<
>> mycassa.protocolVersion();
>>
>>     QSharedPointer<QtCassandra::QCassandraContext>
>> thiscontext(mycassa.context(context));
>>
>>     try{
>>            thiscontext->drop();
>>            mycassa.synchronizeSchemaVersions();
>>
>>       }
>>    catch(...){
>>    //ignore errors...this happens if the context doesn't exist yet...
>>    }
>>
>>    thiscontext->setStrategyClass("SimpleStrategy");
>>    thiscontext->setReplicationFactor(1);
>>
>>     QSharedPointer<QtCassandra::QCassandraTable>
>> tableptr(thiscontext->table(table_name));
>>
>>     tableptr->setColumnType("Standard");
>>    tableptr->setComment("This is a store for netflows sent by OVS");
>>    tableptr->setKeyValidationClass("BytesType");
>>     tableptr->setDefaultValidationClass("BytesType");
>>     tableptr->setComparatorType("BytesType");
>>     tableptr->setKeyCacheSavePeriodInSeconds(14400);
>>     tableptr->setMemtableFlushAfterMins(60);
>>     tableptr->setGcGraceSeconds(3600); // 1h.
>>     tableptr->setMinCompactionThreshold(4);
>>     tableptr->setMaxCompactionThreshold(22);
>>     tableptr->setReplicateOnWrite(1);
>>
>>   thiscontext->create();
>>       mycassa.synchronizeSchemaVersions();
>>
>>   while(1)
>>   {
>>           //code for reading and storing a netflow packet from memory to
>> a QByteArray bin;
>>
>>          QtCassandra::QCassandraValue value(bin);
>> QByteArray rowkey;
>> rowkey.append((char)(i));
>> mycassa["ntopng_data"]["ovs_netflow_table"][rowkey]["col"]= value;
>>
>> }
>>
>>
>> Note that this same code runs in multiple systems. Could this be a
>> problem?
>>
>>
>> Thanks...
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> On Thu, Nov 28, 2013 at 4:25 PM, Aaron Morton <aaron@thelastpickle.com>wrote:
>>
>>>    I am a newbie to the Cassandra world. I would like to know if its
>>> possible for two different nodes to write to a single Cassandra node
>>>
>>> Yes.
>>>
>>>  Currently, I am getting a IllegalRequestException, what (): Default
>>> TException on the first system,
>>>
>>> What is the full error stack ?
>>>
>>>
>>> Occasionally, also hitting "frame size has negative value" thrift
>>> exception when the traffic is high and packets are getting stored very fast.
>>>
>>> On the client or the server ? Can you post the full error stack ?
>>>
>>> Currently using Cassandra 2.0.0 with libQtCassandra library.
>>>
>>> Please upgrade to 2.0.3.
>>>
>>> Cheers
>>>
>>>  -----------------
>>> Aaron Morton
>>> New Zealand
>>> @aaronmorton
>>>
>>> Co-Founder & Principal Consultant
>>> Apache Cassandra Consulting
>>> http://www.thelastpickle.com
>>>
>>> On 26/11/2013, at 4:42 am, Krishna Chaitanya <bnsk1990rulz@gmail.com>
>>> wrote:
>>>
>>> Hello,
>>>    I am a newbie to the Cassandra world. I would like to know if its
>>> possible for two different nodes to write to a single Cassandra node. I
>>> have a packet collector software which runs in two different systems. I
>>> would like both of them to write the packets to a single node(same keyspace
>>> and columnfamily). Currently using Cassandra 2.0.0 with libQtCassandra
>>> library.
>>>                              Currently, I am getting a
>>> IllegalRequestException, what (): Default TException on the first system,
>>> the moment I try to store from the second system, but the second system
>>> works fine. When I restart the program on the first system, the second
>>> system gets the exception and the first one works fine. Occasionally, also
>>> hitting "frame size has negative value" thrift exception when the traffic
>>> is high and packets are getting stored very fast.
>>>   Can someone please point out what I am doing wrong?  Thanks in
>>> advance..
>>>
>>>
>>>
>>
>>
>> --
>> Regards,
>> BNSK
>> *. *
>>
>
>
>
> --
> Regards,
> BNSK
> *. *
>
>
>

Mime
View raw message