From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Delivered-To: caml-list@yquem.inria.fr Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by yquem.inria.fr (Postfix) with ESMTP id 81C59BC48 for ; Tue, 19 Apr 2005 17:28:19 +0200 (CEST) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id j3JFSI7S031907 for ; Tue, 19 Apr 2005 17:28:18 +0200 Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id RAA18759 for ; Tue, 19 Apr 2005 17:28:18 +0200 (MET DST) Received: from us20.unix.fas.harvard.edu (us20.unix.fas.harvard.edu [140.247.35.200]) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id j3JFSHwu031901 for ; Tue, 19 Apr 2005 17:28:18 +0200 Received: from [140.247.238.11] (roam238-11.fas.harvard.edu [140.247.238.11]) by us20.unix.fas.harvard.edu (8.12.11/8.12.11) with ESMTP id j3JFS7oV005906; Tue, 19 Apr 2005 11:28:07 -0400 Message-ID: <42652387.4030006@fas.harvard.edu> Date: Tue, 19 Apr 2005 11:28:07 -0400 From: Mike Hamburg User-Agent: Mozilla Thunderbird 1.0.2 (X11/20050404) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Gerd Stolpmann Cc: Alex Baretta , Caml-list Subject: Re: [Caml-list] CamlGI question [doh] References: <810e04dc0f6bb601fb828db8d18def6c@fas.harvard.edu> <426361DB.10704@rftp.com> <4263BAD0.5020901@barettadeit.com> <1113834691.6248.42.camel@localhost.localdomain> <4263E01D.5090705@barettadeit.com> <426479A2.1020404@fas.harvard.edu> <42647A4B.3050507@fas.harvard.edu> <1113902296.6248.47.camel@localhost.localdomain> In-Reply-To: <1113902296.6248.47.camel@localhost.localdomain> X-Enigmail-Version: 0.90.2.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Miltered: at nez-perce with ID 42652392.001 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Miltered: at nez-perce with ID 42652391.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; caml-list:01 bug:01 execv:01 threads:01 handler:01 handler:01 baretta:01 ocamlnet:01 bug:01 ocamlnet:01 gerd:01 stolpmann:01 jserv:01 config:01 gerd:01 X-Spam-Checker-Version: SpamAssassin 3.0.2 (2004-11-16) on yquem.inria.fr X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.0.2 X-Spam-Level: I'll try to help work out this bug in either Apache/FastCGI or Netcgi, and if that doesn't work, I'll go to AJP. I compiled mod_fastcgi-2.4.0 on Apache 2.0.53. It successfully serves FastCGI pages written with CamlGI, except that it sometimes pauses after 8k of data, and sometimes breaks the pipe to the CGI. Under Netcgi 1.0, the CGI version works but the FastCGI version does not work at all. The difference between the CGI and FastCGI versions is only: let () = Netcgi_fcgi.serv main (`Direct "


"); (* let cgi = new Netcgi.std_activation () let () = main cgi *) The application reads files from the outside world, and may launch processes with fork+execv to thumbnail images. It is multithreaded, with at least 4 threads at all times: the main thread, a thumbnail cache manager, a thread which handles signals (this cannot be done in a signal handler, as it may block, so I wake up the handler thread instead), and a thread which rereads the configuration files periodically, so that the user does not have to send HUP. The application usually raises Unix.Unix_error (EPIPE, "write", "") on the line Netcgi_fcgi.serv main (`Direct "


") or rather, inside Netcgi_fcgi.serv at some point; I believe this occurs before main is called. The webserver also receives EPIPE and returns error 500. Sometimes, I get other errors: sometimes main gets called, and I get Failure("send_output_header"). If this happens, then rollback_output successfully prints "


" but no more (i.e. no further diagnostics). Sometimes, the webserver times out waiting for the first read, in which case the application still raises EPIPE. Is there any more information that would help to debug the problem? Mike Alex Baretta wrote: > If at all possible, rather than AJP I'd stick to FastCGI. The code in > Ocamlnet reportedly works fine, but I don't have experience with it. > Are you sure that the broken pipe is caused by a bug in Ocamlnet and > not in the web server? > > Alex Gerd Stolpmann wrote: >Am Montag, den 18.04.2005, 23:26 -0400 schrieb Mike Hamburg: > > >>I'm obviously too tired to be programming. That should, of course, read >>(1) fix a broken pipe error in Netcgi_fast or >> >> > >Well, we would need more details to help you. > > > >>(2) port the application to (and configure the webserver for) AJP >> >> > >Porting the application is quite simple, just follow the examples coming >with Ocamlnet (in examples/jserv). For the webserver, you need mod_jk >(jk=Jakarta). The configuration reference is here: > >http://jakarta.apache.org/tomcat/connectors-doc/config/apache.html > >Note that Ocamlnet only supports AJP-1.2, not 1.3 which is the current >default for Tomcat. > >Gerd > >