thrift-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hannes Baldursson" <hann...@gmail.com>
Subject Re: Don't get it (Erlang)
Date Fri, 31 Oct 2008 18:50:45 GMT
I just wanted to let you know that I've created two wiki pages,
http://wiki.apache.org/thrift/ThriftUsageErlang and
http://wiki.apache.org/thrift/ThriftUsageErlang

Most of the info comes from my childish questions and the awesome feedback
from  the mailing list!



On Fri, Oct 31, 2008 at 18:10, Suhail Doshi <digitalwarfare@gmail.com>wrote:

> Hannes Baldursson wrote:
>
>> Whoops I'm still in trouble...
>>
>> I've made great progress though... I've figured out HOW to use the
>> skeleton
>> app generator, I've figured out where to place my definition files and the
>> Erlang lib for thrift. I've managed to make the erlang server app (haven't
>> added any code so far).  I got the server running but it crashed and I
>> wasn't able to connect to it via a PHP client (Connection refused).
>>
>> In short I need a proof of concept server that I can call function foo()
>> and
>> get the string "bar" back to the client.
>>
>> Could you give me a hand?
>>
>> Thanks in advance,
>> Hannes Balduesson
>>
>> Here's a dump of what erlang gives me. What am I doing wrong?
>>
>>
>> Eshell V5.5.5  (abort with ^G)
>> (session@hannson-test)1>
>> =PROGRESS REPORT==== 31-Oct-2008::12:27:36 ===
>>          supervisor: {local,sasl_safe_sup}
>>             started: [{pid,<0.45.0>},
>>                       {name,alarm_handler},
>>                       {mfa,{alarm_handler,start_link,[]}},
>>                       {restart_type,permanent},
>>                       {shutdown,2000},
>>                       {child_type,worker}]
>>
>> =PROGRESS REPORT==== 31-Oct-2008::12:27:36 ===
>>          supervisor: {local,sasl_safe_sup}
>>             started: [{pid,<0.46.0>},
>>                       {name,overload},
>>                       {mfa,{overload,start_link,[]}},
>>                       {restart_type,permanent},
>>                       {shutdown,2000},
>>                       {child_type,worker}]
>>
>> =PROGRESS REPORT==== 31-Oct-2008::12:27:36 ===
>>          supervisor: {local,sasl_sup}
>>             started: [{pid,<0.44.0>},
>>                       {name,sasl_safe_sup},
>>                       {mfa,
>>                           {supervisor,
>>                               start_link,
>>                               [{local,sasl_safe_sup},sasl,safe]}},
>>                       {restart_type,permanent},
>>                       {shutdown,infinity},
>>                       {child_type,supervisor}]
>>
>> =PROGRESS REPORT==== 31-Oct-2008::12:27:36 ===
>>          supervisor: {local,sasl_sup}
>>             started: [{pid,<0.47.0>},
>>                       {name,release_handler},
>>                       {mfa,{release_handler,start_link,[]}},
>>                       {restart_type,permanent},
>>                       {shutdown,2000},
>>                       {child_type,worker}]
>>
>> =PROGRESS REPORT==== 31-Oct-2008::12:27:36 ===
>>         application: sasl
>>          started_at: 'session@hannson-test'
>>
>> =SUPERVISOR REPORT==== 31-Oct-2008::12:27:36 ===
>>     Supervisor: {local,session_sup}
>>     Context:    start_error
>>     Reason:     {'EXIT',
>>                     {undef,
>>                         [{thrift_server,
>>                              start_link,
>>                              [8080,sessionServer_thrift,session_service]},
>>                          {supervisor,do_start_child,2},
>>                          {supervisor,start_children,3},
>>                          {supervisor,init_children,2},
>>                          {gen_server,init_it,6},
>>                          {proc_lib,init_p,5}]}}
>>     Offender:   [{pid,undefined},
>>                  {name,session_service},
>>                  {mfa,{session_service,start_link,[]}},
>>                  {restart_type,permanent},
>>                  {shutdown,2000},
>>                  {child_type,worker}]
>>
>> =CRASH REPORT==== 31-Oct-2008::12:27:36 ===
>>  crasher:
>>    pid: <0.51.0>
>>    registered_name: []
>>    error_info: {shutdown,{session_app,start,[normal,[]]}}
>>    initial_call: {application_master,
>>                     init,
>>                     [<0.5.0>,
>>                      <0.50.0>,
>>                      {appl_data,
>>                          session,
>>                          [],
>>                          undefined,
>>                          {session_app,[]},
>>                          ["session_app","session_sup","session_service"],
>>                          [],
>>                          infinity,
>>                          infinity},
>>                      normal]}
>>    ancestors: [<0.50.0>]
>>    messages: [{'EXIT',<0.52.0>,normal}]
>>    links: [<0.50.0>,<0.5.0>]
>>    dictionary: []
>>    trap_exit: true
>>    status: running
>>    heap_size: 610
>>    stack_size: 21
>>    reductions: 2058
>>  neighbours:
>>
>> =INFO REPORT==== 31-Oct-2008::12:27:36 ===
>>    application: session
>>    exited: {shutdown,{session_app,start,[normal,[]]}}
>>    type: temporary
>>
>>
>>
>> On Thu, Oct 30, 2008 at 21:12, Suhail Doshi <digitalwarfare@gmail.com
>> >wrote:
>>
>>
>>
>>> Hannes Baldursson wrote:
>>>
>>>
>>>
>>>> Hi all,
>>>>
>>>> I'm having some troubles with the Erlang generated code from Thrift. I
>>>> might
>>>> add that I'm a newbie in using Thrift and got minimal knowledge about
>>>> Erlang
>>>> but I'm fairly experienced in programming.
>>>>
>>>> I've been looking at the tutorial where in one directory "tutorial/erl/"
>>>> there are files called "server.erl" and "server.sh" that seem to be an
>>>> implementation of the RPC functions. Am I missing something or doesn't
>>>> Thrift generate server stubs based on my definition file?
>>>>
>>>> All the generated files I see are in the gen-erl and I can't see that
>>>> any
>>>> one of them do what server.erl does... am I missing something or do I
>>>> have
>>>> to hand code the "server.erl" file
>>>>
>>>> btw, I will make sure to add your points into the wiki page
>>>>
>>>> Thanks in advance,
>>>> Hannes Baldursson
>>>>
>>>>
>>>>
>>>>
>>>>
>>> Hi Hannes,
>>>
>>> I am very new to thrift too, just started hacking away at it last week.
>>> Fortunately I was lucky to be friends with Todd Lipcon who made the
>>> Erlang
>>> bindings for Thrift in the first place. Something very useful is:
>>>
>>> http://github.com/toddlipcon/thrift_erl_skel/tree/master
>>>
>>> Play around and check it out, should give you a great stepping stone. You
>>> might get stuck make the erlang app, make sure to check where your rpc
>>> directory is pointing to in gen/Makefile.
>>>
>>> Suhail
>>>
>>>
>>>
>>
>>
>>
> Sure, I can pass on the wealth of knowledge:
>
> Download this:
>
> http://github.com/toddlipcon/thrift_erl_skel/tree/master
>
>
> First thing you want to do is execute that perl script so
> do:./make_new_thrift.pl example Example 9090
>
> example - This is name of your thrift file without the extension, a thrift
> file should be in the same directory as the perl script
> Example - Probably the class level name
> 9090 - port feel free to change it
>
> Make sure you've taken the lib/erl/ directory in the thrift source code and
> place it in the same directory as the thrift_skel. Run make on it, we need
> it compiled for this to work.
>
>
> Next make an rpc directory somewhere, I made mine a directory *above* where
> my thrift_skel, thrift directories are. Call it whatever you want, I called
> mine /rpc/. Now you want to edit /example/gen/Makefile. And change the path
> of RPC_DIR to where you actually have it or you will definitely run into
> errors.
>
> Now it's fun time, go into your example/src/ and start editting your
> example_service.erl with any function you want, remember to export it. A
> simple one would be: add(A,B) -> A+B.
> The export at the top of the file below handler_function one would be:
> add/2
>
> Jump back into root directory of your example folder, not the src folder.
> Run make. Everytime you change code, you must run make but you do not have
> to restart your service, Todd made it awesome with code reloading, we'll go
> into that.
>
> Now run: sudo ./start_example.sh and the service should start running with
> a pseudo console for you to reload code and even test your own service.
> Press enter and type: example_service:add(1,3).
>
> Hopefully it works and you see the output of the result.
>
> Sorry if I am babying people in this mailing list, I know some of you could
> code erlang circles around me but it's geared to people who have no idea
> what they are doing. Anyway, enjoy. Don't thank me, thank Todd Lipcon who
> made this and endured a few hours here and there helping me. =)
>
> Sincerely,
> Suhail Doshi
>

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