[ 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.