Catching up(*) on a thread from the end of October (nothing like being
prompt, is there?)...

Charles Blair <c...@uchicago.edu> wrote:

cb> Thanks for spotting the "brainos". But even without those, here is a
cb> repeat of the experiment.

Assuming that these code snippets demonstrate what you're trying to do,
then I have a "Doctor, it hurts when I do this" answer.

    OaiTerm = 
{oai_dc,"AEP-WYS97",{{2004,10,28},{17,21,25}},["aep"],"/storage/aep2003/metadata/oai_dc/oai_dc-AEP-WYS97.xml"}.
    f(C).
    {ok, C} = riak:local_client(). 
    C:put(riak_object:new(<<"oai_test">>, <<"SLF">>, <<"Here is a binary 
value">>)).
    C:put(riak_object:new(<<"oai_test">>, <<"AEP-WYS97">>, OaiTerm)).
    C:get(<<"oai_test">>, <<"SLF">>).                          
    C:get(<<"oai_test">>, <<"AEP-WYS97">>).

Both of the puts via the Erlang client will work, and both of the gets
work just fine.

    f(Pid).
    {ok,Pid} = riakc_pb_socket:start_link("localhost", 8087).
    riakc_pb_socket:get(Pid, <<"oai_test">>, <<"SLF">>).

... and that works, ...

    riakc_pb_socket:get(Pid, <<"oai_test">>,<<"AEP-WYS97">>).

... and that fails with a closed TCP connection.

The value associated with the <<"AEP-WYS97">> key is an Erlang term,
specifially a tuple.  The Protocol Buffers interface doesn't know how to
encode Erlang tuples, so it crashes the process on the server side
that's responsible for decoding & encoding traffic on the socket.

If the value that you put() is converted to a binary via
term_to_binary(), you'll have no problem retrieving it via the Protocol
Buffers interface ... but you'll have to use binary_to_term() to get
your original record back.

-Scott

(*) So much time has gone by that you're probably already figured this
out.  I figured the list's archives ought to have an answer.  And if
Charles didn't have an answer from someplace else, hopefully he returns
tomorrow from holiday in Tahiti to read this very-prompt-seeming
message.

_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to