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