[ 
https://issues.apache.org/jira/browse/THRIFT-599?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12901145#action_12901145
 ] 

Roger Meier commented on THRIFT-599:
------------------------------------

I'm not familiar with erlang, but I want to build the whole thing on the hudson 
continuous integration server at home.

Since that commit, the erlang build fails on Debian Lenny:
{code}
# Erlang
/usr/bin/make -C 
/var/lib/hudson/jobs/Thrift-Debian/workspace/default/thrift/lib/erl
make[1]: Entering directory 
`/var/lib/hudson/jobs/Thrift-Debian/workspace/default/thrift/lib/erl'
for dir in src; do \
                (cd $dir; /usr/bin/make all); \
        done
make[2]: Entering directory 
`/var/lib/hudson/jobs/Thrift-Debian/workspace/default/thrift/lib/erl/src'
mkdir ../ebin
   ERLC  thrift_service.erl
   ERLC  thrift_transport.erl
   ERLC  thrift_protocol.erl
./thrift_protocol.erl:123: type term() undefined
./thrift_protocol.erl:126: type term() undefined
./thrift_protocol.erl:183: type term() undefined
./thrift_protocol.erl:222: type term() undefined
./thrift_protocol.erl:315: type term() undefined
make[2]: *** [../ebin/thrift_protocol.beam] Error 1
make[2]: Leaving directory 
`/var/lib/hudson/jobs/Thrift-Debian/workspace/default/thrift/lib/erl/src'
make[1]: *** [all] Error 2
make[1]: Leaving directory 
`/var/lib/hudson/jobs/Thrift-Debian/workspace/default/thrift/lib/erl'
make: *** [build-indep-stamp] Error 2
{code}

I found out that term is an alias for any, so I replaced term() with any() and 
it compiled.

Debian Lenny currently uses Erlang 12.b.3, do I need a more recent version of 
erlang?
If so, configure should probably check if the required erlang version is 
available.



> Don't use unnecessary processes in the Erlang transports and clients
> --------------------------------------------------------------------
>
>                 Key: THRIFT-599
>                 URL: https://issues.apache.org/jira/browse/THRIFT-599
>             Project: Thrift
>          Issue Type: Improvement
>          Components: Erlang - Library
>            Reporter: David Reiss
>            Assignee: David Reiss
>             Fix For: 0.5
>
>         Attachments: erlang-refactor-v1.patch, thrift-599.patch
>
>
> The Erlang library currently spawns a process for every buffered/framed/http 
> transport and every client.  These processes can be eliminated by by making 
> client, protocol, and transport operations work like operations on Erlang's 
> persistent data structures (like dict): every mutating call returns the new 
> version of the object.  This has four benefits.
> - Easier debugging: single stepping into a gen_server:call is very difficult.
> - Better error messages: problems that occur during Thrift operations are 
> localized to a single process, providing a better stack trace and eliminating 
> uninformative crash reports.
> - More measurable performance: time spent in Thrift client operations will 
> show up in etop under the process making the call, rather than in a transient 
> client or transport process.
> - Better performance: I haven't actually measured this, but I'm pretty sure 
> that eliminating the extra spawns and messages will speed things up.
> The only user-visible changes are to the client.  Every thrift call now 
> returns {NewClient, Result} instead of just Result.
> I'm attaching a big monolithic patch, but a fairly readable chronology of my 
> changes is at 
> <http://gitweb.thrift-rpc.org/?p=thrift.git;a=log;h=refs/heads/pri/dreiss/erl-refactor;hb=HEAD>.
>   I'm open to opinions as to whether this should be committed as one rev or 
> many.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to