[erlang-patches] Fix serialization problem in xmerl export

Fredrik fredrik@REDACTED
Fri Sep 27 14:32:19 CEST 2013


On 09/27/2013 01:49 PM, Richard Carlsson wrote:
> The inheritance mechanism in xmerl uses 'catch apply(M,F,Args)'
> to try different modules M until one was found that had a function
> F/A. However, when M:F/A does not exist, apply/3 will trap to
> error_handler:undefined_function/3, which will call 
> code:ensure_loaded(M), making a synchronous request to the code
> server process. If many processes tried to use xmerl:export()
> concurrently, they would get serialized waiting for the code server 
> process.
>
> This patch uses erlang:function_exported/3 instead to check if M:F/A 
> exists. If M exists, it should already have been loaded at that point 
> due to the inheritance checking in the xmerl:callbacks/1 function.
>
> git fetch git@REDACTED:richcarl/otp.git 
> xmerl-avoid-code-server-serialization
>
> https://github.com/richcarl/otp/tree/xmerl-avoid-code-server-serialization 
>
>
>
>    /Richard
> _______________________________________________
> erlang-patches mailing list
> erlang-patches@REDACTED
> http://erlang.org/mailman/listinfo/erlang-patches
Hello Richard,
I've created a pullrequest for your patch, which you can follow here:
https://github.com/erlang/otp/pull/87
The patch will be run through initial tests and then be assigned to be 
reviewed by responsible developers.
Thanks,

-- 

BR Fredrik Gustafsson
Erlang OTP Team

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-patches/attachments/20130927/930ce4e1/attachment.htm>


More information about the erlang-patches mailing list