Fix serialization problem in xmerl export

Richard Carlsson <[email protected]>
Newsgroups gmane.comp.lang.erlang.patches
Message-ID <[email protected]>
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 [email protected]:richcarl/otp.git 
xmerl-avoid-code-server-serialization

https://github.com/richcarl/otp/tree/xmerl-avoid-code-server-serialization


    /Richard
_______________________________________________
erlang-patches mailing list
[email protected]
http://erlang.org/mailman/listinfo/erlang-patches
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.