[spr28646] Resetting an Allegroserve worker process

The Bug Handler <[email protected]> Mon, 1 Mar 2004 13:14:54 -0800
Newsgroups gmane.lisp.open-source.franz
Message-ID <[email protected]>
dispatched to jkf
No acknowledgement sent

@@id: spr28646
@@reference: 
@@summary: Resetting an Allegroserve worker process
@@product: acl
@@version: 
@@component: allegroserve
@@customer-name: JP Massar
@@customer-company: 
@@customer-phone: 
@@customer-email-address: [email protected]
@@email-cc: [email protected], [email protected], opensource
@@hardware: 
@@operating-system-and-version: 
@@implementation-time: 
@@state: logged 3/1/2004 by jkf
@@state: dispatched 3/1/2004 to jkf by jkf
@@endstate
-------------------------------------------------------------------------------
@@resolution: 

-------------------------------------------------------------------------------
@@discussion:

Return-Path: owner-opensource
Delivery-Date: Mon Mar  1 13:08:05 2004
Received: from turtle.franz.com (192.132.95.23) by tiger.franz.com
    (Allegro Maild v1.1.9) id 000000039111; Mon, 1 Mar 2004 13:08:05 -0800
Received: (from majordomo@localhost)
	by turtlemail.franz.com (8.11.6/8.9.0) id i21L5dg17102
	for opensource-list; Mon, 1 Mar 2004 13:05:39 -0800
X-Authentication-Warning: turtle.franz.com: majordomo set sender to [email protected] using -f
Received: from spider.franz.com (spider [10.2.0.4])
	by turtlemail.franz.com (8.11.6/8.9.0) with SMTP id i21L5aE17099
	for <opensource-local@turtle>; Mon, 1 Mar 2004 13:05:36 -0800
Received: from sccrmhc12.comcast.net (204.127.202.56) by spider.franz.com
    (Allegro Maild v1.1.12) id 000000497525; Mon, 1 Mar 2004 13:05:36 -0800
Received: from jpm.alum.mit.edu (c-24-7-67-35.client.comcast.net[24.7.67.35])
          by comcast.net (sccrmhc12) with SMTP
          id <2004030120315901200hggjce>
          (Authid: jamespmassar);
          Mon, 1 Mar 2004 20:31:59 +0000
Message-Id: <[email protected]>
X-Sender: [email protected]
X-Mailer: QUALCOMM Windows Eudora Version 6.0.3.0
Date: Mon, 01 Mar 2004 12:33:59 -0800
To: opensource
From: JP Massar <[email protected]>
Subject: Resetting an Allegroserve worker process
Cc: jeff Shrager <[email protected]>, [email protected]
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"; format=flowed
X-Fi-Border: spider
Sender: owner-opensource
Precedence: bulk
X-Bayes: ham score=0

Suppose that I have put an Allegroserve worker process into
an infinite loop, or it's doing some computation I decide to terminate.

Suppose the worker process I want to decommission is <p>.

The tests I've run using Allegro 6.2 on Windows with localhost
show the following behavior:

If I do an mp:process-kill on <p>, that destroys the worker process,
but restarts the computation using another worker process!

If I do an mp:process-reset on <p> the process resets, but it also restarts
the computation.

There seems to be no way to just terminate and stop!

An example:

Let's say I have <p> performing the following computation deep inside
a servlet that <p> invokes to handle a particular published URL:

(dotimes (j 180) (sleep 1) (setq *foo* (list j (incf *xcount*)))

where I have independently setq'ed *xcount* to 0 previously.

So I can examine *xcount* from another thread, and of course its value
increases once a second.

Now if I do

(mp:process-kill <p>)

when, say *foo* = (60 61)

<p> goes away.  If I examine *foo* it looks something like (4 65).
If I examine it again it looks like, e.g., (6 67)

The list of processes shows that <p> (one of the worker processes)
is gone, but another one is running.

If I instead do

(mp:process-reset <p>)

the same kind of thing happens to *foo* but <p> does not go away.


Now, assuming I have not gone insane (because this behavior is quite
counterintuitive, especially wrt mp:process-kill) and this is indeed
what is happening, and assuming that I have no way of inserting
test code into my loop that is running in <p>, to test some dynamic 
termination flag, is
there any way I can just get the worker process to stop itself and
Allegroserve not to restart the computation?