Alexey Radkov created THRIFT-2528:
-------------------------------------

             Summary: Thrift Erlang Library: Multiple thrift applications in 
one bundle
                 Key: THRIFT-2528
                 URL: https://issues.apache.org/jira/browse/THRIFT-2528
             Project: Thrift
          Issue Type: Bug
          Components: Erlang - Library
            Reporter: Alexey Radkov
            Priority: Minor
         Attachments: thrift-appreg.patch

Probably this is rather a wish than a bug. Also i found the multiplex task for 
Erlang [https://issues.apache.org/jira/browse/THRIFT-2110] that relates to this 
but seems to be slightly different.

I need two thrift applications running in one bundle: a library API, say 
_rsappapi_ and a test API _rstestapi_: the former is needed to set up the 
library API configuration via thrift calls. Currently it is not feasible 
because thrift application registers in {{start_link()}} with predefined name 
in {{lib/erl/src/thrift_server.erl}}:

{code}
gen_server:start_link({local, ?SERVER}, ?MODULE, {Port, Service, 
HandlerModule}, []).
{code}

and i got {{already_started}} exception:

{noformat}
=PROGRESS REPORT==== 11-May-2014::12:26:32 ===
         application: rsappapi
          started_at: rstestapi@desktop

=SUPERVISOR REPORT==== 11-May-2014::12:26:32 ===
     Supervisor: {local,rstestapi_sup}
     Context:    start_error
     Reason:     {already_started,<0.53.0>}
     Offender:   [{pid,undefined},
                  {name,rstestapi_service},
                  {mfargs,{rstestapi_service,start_link,[]}},
                  {restart_type,permanent},
                  {shutdown,2000},
                  {child_type,worker}]


=CRASH REPORT==== 11-May-2014::12:26:32 ===
  crasher:
    initial call: application_master:init/4
    pid: <0.55.0>
    registered_name: []
    exception exit: {{shutdown,
                         {failed_to_start_child,rstestapi_service,
                             {already_started,<0.53.0>}}},
                     {rstestapi_app,start,[normal,[]]}}
      in function  application_master:init/4 (application_master.erl, line 133)
    ancestors: [<0.54.0>]
    messages: [{'EXIT',<0.56.0>,normal}]
    links: [<0.54.0>,<0.7.0>]
    dictionary: []
    trap_exit: true
    status: running
    heap_size: 610
    stack_size: 27
    reductions: 130
  neighbours:

=INFO REPORT==== 11-May-2014::12:26:33 ===
    application: rstestapi
    exited: {{shutdown,
                 {failed_to_start_child,rstestapi_service,
                     {already_started,<0.53.0>}}},
             {rstestapi_app,start,[normal,[]]}}
    type: temporary
{noformat}

I attached a patch that fixes this issue for me. It just replaces constant 
{{?SERVER}} with the variable {{Service}} which normally has well-distinguished 
name like _tSomeService_thrift_ and should not mess in Erlang applications 
names.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to