From: Pierre-Alexandre V. <ont...@gm...> - 2012-04-06 13:52:19
|
Hi, my app failed systematically when it try to connect to my Alfresco server. Context : my program is a cgi http server which make himself certain http call. It is runned in a multiprocess manner, and it is interesting to note that my problem disappear if you set to multi-thread instead of multiprocess. In the main I have : let nethttpd_factory = Nethttpd_plex.nethttpd_factory ~handlers:handlers () in Netplex_main.startup parallelizer Netplex_log.logger_factories (* allow all built-in logging styles *) Netplex_workload.workload_manager_factories (* ... all ways of workload management *) [ nethttpd_factory ] (* make this nethttpd available *) cmdline_cfg ;; Now, the error Apparently (according to stack trace), it fails on Http_client.Convenience.http_get It doesn't throw an error, but (captured in the error of the CGI which is called) : Unix.Unix_error(EINVAL, "read (result invalid)", "") Here's the code where it failed : let requete_get url = Utils.info ("GET "^url) ; try Http_client.Convenience.http_get url <--------------------------------------- with Http_client.Http_error (nerr,msg) -> Utils.log2 ("requete_get : "^(string_of_int nerr)) (Printexc.get_backtrace ()) msg; "" The associated log with "-debug Http_client" parameter is show in [1] More suprising, I tried to modify requete_get by let requete_get url = Utils.info ("GET "^url) ; Utils.execute_command ("curl -s '"^url^"'") (* execute_command : string -> string execute an unix command and return the result in a string*) It failed too, but works sometimes and the logs give : [Fri Apr 6 15:34:35 2012] [debug] [52085:0] Netlog: WARNING track_fd: descriptor already tracked as 4(Netsys_posix - create_event) [Fri Apr 6 15:34:35 2012] [debug] [52085:0] Netlog: track_fd: tracking descriptor 4(Netsys_posix - create_event) [Fri Apr 6 15:34:35 2012] [nethttpd] [crit] run: Exception Unix.Unix_error(EINVAL, "read (result invalid)", "") and Sys_error("Bad file descriptor");;Raised by primitive operation at file " pervasives.ml", line 325, characters 12-32 Called from file "Utils.ml", line 97, characters 24-41 <---------------------- in the Utils.execute_command function In advance, thank you for your help Regards, Pierre-Alexandre [1] Logs of the first version of function requete_get which use Http_client [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: FD 11 - HTTP connection: Got Call 2121! [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: FD 11 - HTTP connection: pipelining=true persistency=false close_connection=false->false [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: Call 2121 - postprocessing [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: FD 11 - HTTP connection: Shutdown! [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: FD 11 - HTTP connection: Closing socket! [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: HTTP connection: checking remaining pipeline requests [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: HTTP connection: creating direct connection to alfrescodev:8080 [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: FD 11 - HTTP direct connection to alfrescodev:8080: Connected! [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: HTTP Connection: adding call 2353 [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: Call 2353: initialize transmitter [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: FD 11 - Call 2353 - HTTP request: GET /alfresco/service/docasu/ui/folder/docs?nodeId=8eb7be3d-0790-493d-a173-0140f7b91df1&alf_ticket=TICKET_9fecb90892eb5703a31ff18793709955bbf550d9 HTTP/1.1 [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: FD 11 - HTTP connection: Got Call 2353! [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: FD 11 - HTTP connection: pipelining=true persistency=false close_connection=false->false [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: Call 2353 - postprocessing [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: FD 11 - HTTP connection: Shutdown! [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: FD 11 - HTTP connection: Closing socket! [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: HTTP connection: checking remaining pipeline requests [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: FD 11 - Shutdown error: Unix.Unix_error(EBADF, "shutdown", "") [Fri Apr 6 15:13:07 2012] [nethttpd] [crit] Unix.shutdown (fd 11): Exception Unix.Unix_error(EBADF, "shutdown", "") [Fri Apr 6 15:13:07 2012] [nethttpd] [crit] Unix.close (fd 11): Exception Unix.Unix_error(EBADF, "close", "") [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: HTTP connection: creating direct connection to alfrescodev:8080 [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: FD 4 - HTTP direct connection to alfrescodev:8080: Connected! [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Netlog: WARNING track_fd: descriptor already tracked as 4(Netsys_posix - create_event) [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Netlog: track_fd: tracking descriptor 4(Http_client - HTTP direct connection to alfrescodev:8080) [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: HTTP Connection: adding call 2614 [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: Call 2614: initialize transmitter [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: FD 4 - Call 2614 - HTTP request: GET /alfresco/service/docasu/ui/folder/docs?nodeId=f82b2906-9f56-463b-8ff8-f2e0545ed2f8&alf_ticket=TICKET_9fecb90892eb5703a31ff18793709955bbf550d9 HTTP/1.1 [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: HTTP connection: reset [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: FD 4 - HTTP connection: Shutdown! [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: FD 4 - HTTP connection: Closing socket! [Fri Apr 6 15:13:07 2012] [debug] [49549:0] Http_client: Call 2614 - error Http_client.No_reply -- --------------------- https://twitter.com/#!/ontologiae/ http://linuxfr.org/users/montaigne |