We have installed Thrift from the official repository (trunk, revision
1152120) and our code now sets keyspace successfully. Apparently, a
related bug has been fixed in Thrift after the release of Thrift 0.6.1.
We shall share some example C code if we manage to get this working.
On 07/28/2011 12:29 PM, Aleksandrs Saveljevs wrote:
Dear all,
We are considering using Cassandra for storing gathered data in Zabbix
(see https://support.zabbix.com/browse/ZBXNEXT-844 for more details).
Because Zabbix is written in C, we are considering using Thrift API in
C, too.
However, we are running into problems trying to get even the basic code
work. Consider the attached source code. This is essentially a rewrite
of the first part of the C++ example given at
http://wiki.apache.org/cassandra/ThriftExamples#C.2B-.2B- . If we run it
under strace, we see that it hangs on the call to recv() when setting
keyspace:
$ strace -s 64 ./test
...
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
connect(3, {sa_family=AF_INET, sin_port=htons(9160),
sin_addr=inet_addr("127.0.0.1")}, 16) = 0
send(3,
"\0\0\0/\200\1\0\1\0\0\0\fset_keyspace\0\0\0\0\v\0\1\0\0\0\vmy_keyspace\0",
47, 0) = 47
recv(3, ^C <unfinished ...>
If we run the C++ example, it passes this step successfully. Does
anybody know where the problem is? We are using Thrift 0.6.1 and
Cassandra 0.8.1.
Also, what is the current state of Thrift API in C? Can it be considered
stable? Has anybody used it successfully? Any examples?
Thanks,
Aleksandrs