incubator-cassandra-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Annu Agrawal <annu.agrawa...@gmail.com>
Subject Problem in running code using thrift api and cassandra
Date Sun, 10 Mar 2013 13:29:47 GMT
Hi ,

The following program has a loop which reads a value from cassandra column
which is stored in the form of string. In every iteration of the loop it
reads that value converts it in unsigned long and adds 4096 in it . Then
again it inserts this value in cassandra.

The loop stops incrementing after some iterations. I have tried the same
program without inserting in cassandra and it works totally fine.

But the following program works fine till 'size' variable reaches 61440.
After this iteration i.e 61440+4096=65536 the value read from cassandra
continues to be 61440 only untill the loop ends. So this value is not
getting inserted in cassandra.

This program works absolutely fine when debugged. So I am not able to find
where is exactly the problem.
I am deadly stuck up here.. Is there any problem with jvm heap space or
should any changes be made in cassandra.yaml file. Please help..


    #include "../gen-cpp/Cassandra.h"
#include <iostream>
#include <thrift/protocol/TBinaryProtocol.h>
#include <thrift/transport/TSocket.h>
#include <thrift/transport/TTransportUtils.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
#include <stdlib.h>
#include "base64.h"

using namespace std;
using namespace apache::thrift;
using namespace apache::thrift::protocol;
using namespace apache::thrift::transport;
using namespace org::apache::cassandra;
using namespace boost;

static string host("127.0.0.1");
static int port= 9160;

//generate timestamp
int64_t getTS()
{
  time_t ltime;
  ltime=time(NULL);
  return (int64_t)ltime;
}

int main()
{
    shared_ptr <TTransport> socket(new TSocket(host, port));
    shared_ptr <TTransport> transport(new TFramedTransport(socket));
    shared_ptr <TProtocol> protocol(new TBinaryProtocol(transport));

    string base64,metadata;
    unsigned long size=0, *sizep;
    int ch;
    sizep=&size;

    CassandraClient client(protocol);
    ColumnPath cpath;
    ColumnParent cp;
    ColumnOrSuperColumn csc;
    Column c1;

    cp.column_family.assign("mycolfamily");
    cp.super_column.assign("");

    cpath.column_family.assign("mycolfamily");
        cpath.__set_column("data");

    transport->open();
    client.set_keyspace("mykeyspace");

    base64= base64_encode(UCCP(sizep),sizeof(*sizep));//converts
unsigned long to ASCII string

    c1.__set_name("data");
    c1.__set_value(base64);
    c1.__set_timestamp(getTS());
    client.insert("mykey", cp, c1,
org::apache::cassandra::ConsistencyLevel::ONE);

    for(ch=0;ch<30;ch++)
    {
        //reading from cassandra
            client.get(csc, "mykey", cpath,
org::apache::cassandra::ConsistencyLevel::ONE);

        metadata = base64_decode(csc.column.value); //converts string
to unsigned long
        memcpy(sizep,metadata.data(),metadata.size());
        sizep = (unsigned long *)sizep;
        cout<<"....\n Read value : "<< *sizep ;

        // incrementing size
        *sizep = *sizep + 4096;

        //writing size in cassandra
        base64= base64_encode(UCCP(sizep),sizeof(*sizep));//converts
unsigned long to ASCII string
        c1.__set_name("data");
        c1.__set_value(base64);
            c1.__set_timestamp(getTS());
        client.insert("mykey", cp, c1,
org::apache::cassandra::ConsistencyLevel::ONE);

        cout<<"\n Written value : "<< *sizep <<"\n\n";
    }
    transport->close();
    return 0;
}



-- 
Thanks,
Annu Agrawal

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message