You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by J T <jt...@googlemail.com> on 2010/07/27 20:33:29 UTC
Upgrading to Cassanda 0.7 Thrift Erlang
Hi,
I just tried upgrading a perfectly working Cassandra 0.6.3 to Cassandra 0.7
and am finding that even after re-generating the erlang thrift bindings that
I am unable to perform any operation.
I can get a connection but if I try to login or set the keyspace I get a
report from the erlang bindings to say that the connection is closed.
I then tried upgrading to a later version of thrift but still get the same
error.
e.g.
(zotonic3989@127.0.0.1)1> thrift_client:start_link("localhost", 9160,
cassandra_thrift).
{ok,<0.327.0>}
(zotonic3989@127.0.0.1)2> {ok,C}=thrift_client:start_link("localhost", 9160,
cassandra_thrift).
{ok,<0.358.0>}
(zotonic3989@127.0.0.1)3> thrift_client:call( C, set_keyspace, [ <<"Test">>
]).
=ERROR REPORT==== 27-Jul-2010::03:48:08 ===
** Generic server <0.358.0> terminating
** Last message in was {call,set_keyspace,[<<"Test">>]}
** When Server state == {state,cassandra_thrift,
{protocol,thrift_binary_protocol,
{binary_protocol,
{transport,thrift_buffered_transport,<0.359.0>},
true,true}},
0}
** Reason for termination ==
** {{case_clause,{error,closed}},
[{thrift_client,read_result,3},
{thrift_client,catch_function_exceptions,2},
{thrift_client,handle_call,3},
{gen_server,handle_msg,5},
{proc_lib,init_p_do_apply,3}]}
** exception exit: {case_clause,{error,closed}}
in function thrift_client:read_result/3
in call from thrift_client:catch_function_exceptions/2
in call from thrift_client:handle_call/3
in call from gen_server:handle_msg/5
in call from proc_lib:init_p_do_apply/3
The cassandra log seems to indicate that a connection has been made
(although thats only apparent by a TRACE log message saying that a logout
has been done).
The cassandra-cli program is able to connect and function normally so I can
only assume that there is a problem with the erlang bindings.
Has anyone else had any success using 0.7 from Erlang ?
JT.
Re: Upgrading to Cassanda 0.7 Thrift Erlang
Posted by Dan Washusen <da...@reactive.org>.
p.s. If I set thrift_framed_transport_size_in_mb to 0 and just use TSocket
instead of TFramedTransport everything works as expected...
On 1 August 2010 12:16, Dan Washusen <da...@reactive.org> wrote:
> Slightly off topic but still related (java instead of erlang). I just
> tried using the latest trunk build available on Hudson (2010-07-31_12-31-29)
> and I'm getting lock ups.
>
> The same code (without the framed transport) was working with a build form
> 2010-07-07_13-32-16
>
> I'm connecting using the following:
>
>> TSocket socket = new TSocket(node, port);
>>>
>>> transport = new TFramedTransport(socket);
>>>
>>> protocol = new TBinaryProtocol(transport);
>>>
>>> client = new Cassandra.Client(protocol);
>>>
>>>
>>>> transport.open();
>>>
>>>
>>>> // set the keyspace on the client and do get slice stuff
>>>
>>>
>
> The locked up thread looks like:
>
>> "main" prio=5 tid=101801000 nid=0x100501000 runnable [1004fe000]
>
> java.lang.Thread.State: RUNNABLE
>
> at java.net.SocketInputStream.socketRead0(Native Method)
>
> at java.net.SocketInputStream.read(SocketInputStream.java:129)
>
> at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
>
> at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
>
> at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
>
> - locked <1093daa10> (a java.io.BufferedInputStream)
>
> at
>> org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:127)
>
> at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84)
>
> at
>> org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:129)
>
> at
>> org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101)
>
> at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84)
>
> at
>> org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:369)
>
> at
>> org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:295)
>
> at
>> org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:202)
>
> at
>> org.apache.cassandra.thrift.Cassandra$Client.recv_get_slice(Cassandra.java:542)
>
> at
>> org.apache.cassandra.thrift.Cassandra$Client.get_slice(Cassandra.java:524)
>
>
>
>
> On 28 July 2010 17:43, J T <jt...@googlemail.com> wrote:
>
>> Hi,
>>
>> That fixed the problem!
>>
>> I added the Framed option and like magic things have started working
>> again.
>>
>> Example:
>>
>> thrift_client:start_link("localhost", 9160, cassandra_thrift, [ { framed,
>> true } ] )
>>
>> JT.
>>
>>
>>
>> On Tue, Jul 27, 2010 at 10:04 PM, Jonathan Ellis <jb...@gmail.com>wrote:
>>
>>> trunk is using framed thrift connections by default now (was unframed)
>>>
>>> On Tue, Jul 27, 2010 at 11:33 AM, J T <jt...@googlemail.com>
>>> wrote:
>>> > Hi,
>>> > I just tried upgrading a perfectly working Cassandra 0.6.3 to Cassandra
>>> 0.7
>>> > and am finding that even after re-generating the erlang thrift bindings
>>> that
>>> > I am unable to perform any operation.
>>> > I can get a connection but if I try to login or set the keyspace I get
>>> a
>>> > report from the erlang bindings to say that the connection is closed.
>>> > I then tried upgrading to a later version of thrift but still get the
>>> same
>>> > error.
>>> > e.g.
>>> > (zotonic3989@127.0.0.1)1> thrift_client:start_link("localhost", 9160,
>>> > cassandra_thrift).
>>> > {ok,<0.327.0>}
>>> > (zotonic3989@127.0.0.1)2> {ok,C}=thrift_client:start_link("localhost",
>>> 9160,
>>> > cassandra_thrift).
>>> > {ok,<0.358.0>}
>>> > (zotonic3989@127.0.0.1)3> thrift_client:call( C, set_keyspace, [
>>> <<"Test">>
>>> > ]).
>>> > =ERROR REPORT==== 27-Jul-2010::03:48:08 ===
>>> > ** Generic server <0.358.0> terminating
>>> > ** Last message in was {call,set_keyspace,[<<"Test">>]}
>>> > ** When Server state == {state,cassandra_thrift,
>>> > {protocol,thrift_binary_protocol,
>>> > {binary_protocol,
>>> >
>>> {transport,thrift_buffered_transport,<0.359.0>},
>>> > true,true}},
>>> > 0}
>>> > ** Reason for termination ==
>>> > ** {{case_clause,{error,closed}},
>>> > [{thrift_client,read_result,3},
>>> > {thrift_client,catch_function_exceptions,2},
>>> > {thrift_client,handle_call,3},
>>> > {gen_server,handle_msg,5},
>>> > {proc_lib,init_p_do_apply,3}]}
>>> > ** exception exit: {case_clause,{error,closed}}
>>> > in function thrift_client:read_result/3
>>> > in call from thrift_client:catch_function_exceptions/2
>>> > in call from thrift_client:handle_call/3
>>> > in call from gen_server:handle_msg/5
>>> > in call from proc_lib:init_p_do_apply/3
>>> > The cassandra log seems to indicate that a connection has been made
>>> > (although thats only apparent by a TRACE log message saying that a
>>> logout
>>> > has been done).
>>> > The cassandra-cli program is able to connect and function normally so I
>>> can
>>> > only assume that there is a problem with the erlang bindings.
>>> > Has anyone else had any success using 0.7 from Erlang ?
>>> > JT.
>>>
>>>
>>>
>>> --
>>> Jonathan Ellis
>>> Project Chair, Apache Cassandra
>>> co-founder of Riptano, the source for professional Cassandra support
>>> http://riptano.com
>>>
>>
>>
>
Re: Upgrading to Cassanda 0.7 Thrift Erlang
Posted by Dan Washusen <da...@reactive.org>.
Slightly off topic but still related (java instead of erlang). I just tried
using the latest trunk build available on Hudson (2010-07-31_12-31-29) and
I'm getting lock ups.
The same code (without the framed transport) was working with a build form
2010-07-07_13-32-16
I'm connecting using the following:
> TSocket socket = new TSocket(node, port);
>>
>> transport = new TFramedTransport(socket);
>>
>> protocol = new TBinaryProtocol(transport);
>>
>> client = new Cassandra.Client(protocol);
>>
>>
>>> transport.open();
>>
>>
>>> // set the keyspace on the client and do get slice stuff
>>
>>
The locked up thread looks like:
> "main" prio=5 tid=101801000 nid=0x100501000 runnable [1004fe000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
- locked <1093daa10> (a java.io.BufferedInputStream)
at
> org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:127)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84)
at
> org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:129)
at
> org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84)
at
> org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:369)
at
> org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:295)
at
> org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:202)
at
> org.apache.cassandra.thrift.Cassandra$Client.recv_get_slice(Cassandra.java:542)
at
> org.apache.cassandra.thrift.Cassandra$Client.get_slice(Cassandra.java:524)
On 28 July 2010 17:43, J T <jt...@googlemail.com> wrote:
> Hi,
>
> That fixed the problem!
>
> I added the Framed option and like magic things have started working again.
>
> Example:
>
> thrift_client:start_link("localhost", 9160, cassandra_thrift, [ { framed,
> true } ] )
>
> JT.
>
>
>
> On Tue, Jul 27, 2010 at 10:04 PM, Jonathan Ellis <jb...@gmail.com>wrote:
>
>> trunk is using framed thrift connections by default now (was unframed)
>>
>> On Tue, Jul 27, 2010 at 11:33 AM, J T <jt...@googlemail.com> wrote:
>> > Hi,
>> > I just tried upgrading a perfectly working Cassandra 0.6.3 to Cassandra
>> 0.7
>> > and am finding that even after re-generating the erlang thrift bindings
>> that
>> > I am unable to perform any operation.
>> > I can get a connection but if I try to login or set the keyspace I get a
>> > report from the erlang bindings to say that the connection is closed.
>> > I then tried upgrading to a later version of thrift but still get the
>> same
>> > error.
>> > e.g.
>> > (zotonic3989@127.0.0.1)1> thrift_client:start_link("localhost", 9160,
>> > cassandra_thrift).
>> > {ok,<0.327.0>}
>> > (zotonic3989@127.0.0.1)2> {ok,C}=thrift_client:start_link("localhost",
>> 9160,
>> > cassandra_thrift).
>> > {ok,<0.358.0>}
>> > (zotonic3989@127.0.0.1)3> thrift_client:call( C, set_keyspace, [
>> <<"Test">>
>> > ]).
>> > =ERROR REPORT==== 27-Jul-2010::03:48:08 ===
>> > ** Generic server <0.358.0> terminating
>> > ** Last message in was {call,set_keyspace,[<<"Test">>]}
>> > ** When Server state == {state,cassandra_thrift,
>> > {protocol,thrift_binary_protocol,
>> > {binary_protocol,
>> >
>> {transport,thrift_buffered_transport,<0.359.0>},
>> > true,true}},
>> > 0}
>> > ** Reason for termination ==
>> > ** {{case_clause,{error,closed}},
>> > [{thrift_client,read_result,3},
>> > {thrift_client,catch_function_exceptions,2},
>> > {thrift_client,handle_call,3},
>> > {gen_server,handle_msg,5},
>> > {proc_lib,init_p_do_apply,3}]}
>> > ** exception exit: {case_clause,{error,closed}}
>> > in function thrift_client:read_result/3
>> > in call from thrift_client:catch_function_exceptions/2
>> > in call from thrift_client:handle_call/3
>> > in call from gen_server:handle_msg/5
>> > in call from proc_lib:init_p_do_apply/3
>> > The cassandra log seems to indicate that a connection has been made
>> > (although thats only apparent by a TRACE log message saying that a
>> logout
>> > has been done).
>> > The cassandra-cli program is able to connect and function normally so I
>> can
>> > only assume that there is a problem with the erlang bindings.
>> > Has anyone else had any success using 0.7 from Erlang ?
>> > JT.
>>
>>
>>
>> --
>> Jonathan Ellis
>> Project Chair, Apache Cassandra
>> co-founder of Riptano, the source for professional Cassandra support
>> http://riptano.com
>>
>
>
Re: Upgrading to Cassanda 0.7 Thrift Erlang
Posted by J T <jt...@googlemail.com>.
Hi,
That fixed the problem!
I added the Framed option and like magic things have started working again.
Example:
thrift_client:start_link("localhost", 9160, cassandra_thrift, [ { framed,
true } ] )
JT.
On Tue, Jul 27, 2010 at 10:04 PM, Jonathan Ellis <jb...@gmail.com> wrote:
> trunk is using framed thrift connections by default now (was unframed)
>
> On Tue, Jul 27, 2010 at 11:33 AM, J T <jt...@googlemail.com> wrote:
> > Hi,
> > I just tried upgrading a perfectly working Cassandra 0.6.3 to Cassandra
> 0.7
> > and am finding that even after re-generating the erlang thrift bindings
> that
> > I am unable to perform any operation.
> > I can get a connection but if I try to login or set the keyspace I get a
> > report from the erlang bindings to say that the connection is closed.
> > I then tried upgrading to a later version of thrift but still get the
> same
> > error.
> > e.g.
> > (zotonic3989@127.0.0.1)1> thrift_client:start_link("localhost", 9160,
> > cassandra_thrift).
> > {ok,<0.327.0>}
> > (zotonic3989@127.0.0.1)2> {ok,C}=thrift_client:start_link("localhost",
> 9160,
> > cassandra_thrift).
> > {ok,<0.358.0>}
> > (zotonic3989@127.0.0.1)3> thrift_client:call( C, set_keyspace, [
> <<"Test">>
> > ]).
> > =ERROR REPORT==== 27-Jul-2010::03:48:08 ===
> > ** Generic server <0.358.0> terminating
> > ** Last message in was {call,set_keyspace,[<<"Test">>]}
> > ** When Server state == {state,cassandra_thrift,
> > {protocol,thrift_binary_protocol,
> > {binary_protocol,
> >
> {transport,thrift_buffered_transport,<0.359.0>},
> > true,true}},
> > 0}
> > ** Reason for termination ==
> > ** {{case_clause,{error,closed}},
> > [{thrift_client,read_result,3},
> > {thrift_client,catch_function_exceptions,2},
> > {thrift_client,handle_call,3},
> > {gen_server,handle_msg,5},
> > {proc_lib,init_p_do_apply,3}]}
> > ** exception exit: {case_clause,{error,closed}}
> > in function thrift_client:read_result/3
> > in call from thrift_client:catch_function_exceptions/2
> > in call from thrift_client:handle_call/3
> > in call from gen_server:handle_msg/5
> > in call from proc_lib:init_p_do_apply/3
> > The cassandra log seems to indicate that a connection has been made
> > (although thats only apparent by a TRACE log message saying that a logout
> > has been done).
> > The cassandra-cli program is able to connect and function normally so I
> can
> > only assume that there is a problem with the erlang bindings.
> > Has anyone else had any success using 0.7 from Erlang ?
> > JT.
>
>
>
> --
> Jonathan Ellis
> Project Chair, Apache Cassandra
> co-founder of Riptano, the source for professional Cassandra support
> http://riptano.com
>
Re: Upgrading to Cassanda 0.7 Thrift Erlang
Posted by Jonathan Ellis <jb...@gmail.com>.
trunk is using framed thrift connections by default now (was unframed)
On Tue, Jul 27, 2010 at 11:33 AM, J T <jt...@googlemail.com> wrote:
> Hi,
> I just tried upgrading a perfectly working Cassandra 0.6.3 to Cassandra 0.7
> and am finding that even after re-generating the erlang thrift bindings that
> I am unable to perform any operation.
> I can get a connection but if I try to login or set the keyspace I get a
> report from the erlang bindings to say that the connection is closed.
> I then tried upgrading to a later version of thrift but still get the same
> error.
> e.g.
> (zotonic3989@127.0.0.1)1> thrift_client:start_link("localhost", 9160,
> cassandra_thrift).
> {ok,<0.327.0>}
> (zotonic3989@127.0.0.1)2> {ok,C}=thrift_client:start_link("localhost", 9160,
> cassandra_thrift).
> {ok,<0.358.0>}
> (zotonic3989@127.0.0.1)3> thrift_client:call( C, set_keyspace, [ <<"Test">>
> ]).
> =ERROR REPORT==== 27-Jul-2010::03:48:08 ===
> ** Generic server <0.358.0> terminating
> ** Last message in was {call,set_keyspace,[<<"Test">>]}
> ** When Server state == {state,cassandra_thrift,
> {protocol,thrift_binary_protocol,
> {binary_protocol,
> {transport,thrift_buffered_transport,<0.359.0>},
> true,true}},
> 0}
> ** Reason for termination ==
> ** {{case_clause,{error,closed}},
> [{thrift_client,read_result,3},
> {thrift_client,catch_function_exceptions,2},
> {thrift_client,handle_call,3},
> {gen_server,handle_msg,5},
> {proc_lib,init_p_do_apply,3}]}
> ** exception exit: {case_clause,{error,closed}}
> in function thrift_client:read_result/3
> in call from thrift_client:catch_function_exceptions/2
> in call from thrift_client:handle_call/3
> in call from gen_server:handle_msg/5
> in call from proc_lib:init_p_do_apply/3
> The cassandra log seems to indicate that a connection has been made
> (although thats only apparent by a TRACE log message saying that a logout
> has been done).
> The cassandra-cli program is able to connect and function normally so I can
> only assume that there is a problem with the erlang bindings.
> Has anyone else had any success using 0.7 from Erlang ?
> JT.
--
Jonathan Ellis
Project Chair, Apache Cassandra
co-founder of Riptano, the source for professional Cassandra support
http://riptano.com