[Zope] ZServer *still* dying - help?

Mayers, Philip J p.mayers@ic.ac.uk
Thu, 5 Apr 2001 19:40:27 +0100


Ok, I've got a "fails reliably once every few (>15) request" still held over
from the last person I sent it to - it *still* fails on Zope 2.3.1, I've got
a zexp and the full instructions:

Ok, the zexp should be accessible from:

http://blacklotus.cc.ic.ac.uk/~pjm3/bug.zexp

You'll need Psycopg installed and a Postgresql server. I used
psycopg-0.4.6.tar.gz, available from:

http://blacklotus.cc.ic.ac.uk/~pjm3/psycopg-0.4.6.tar.gz (note - same
results with 0.5.1)

If you can't get a Postgresql server, let me know and you can point it at
mine (I'll need to know the subnet(s) you'll be coming from). The following
should create everything needed to repro the bug:

CREATE TABLE machine (
machineid text,
owner text NOT NULL,
ownerdept text NOT NULL,
owneremail text NOT NULL,
ownertel text,
machinetype text,
machineos text,
machineserialno text,
location text NOT NULL,
comment text,
updatedby text,
updatedat timestamp,
PRIMARY KEY (machineid)
);

insert into machine (machineid, owner, ownerdept, owneremail, ownertel,
machinetype, machineos, machineserialno, location, comment, updatedby,
updatedat) values ('wildfire.net.ic.ac.uk', 'Phil Mayers', '410 Mech Eng',
'p.mayers@ic.ac.uk', '46973', 'PC NT / Linux',  '410 Mech Eng',  'batch',
now())

Import the ZEXP, then try getting:

http://zope.server:port/showmachine_html

Very quickly, possibly using the script I posted yesterday:

http://blacklotus.cc.ic.ac.uk/~pjm3/floodget.py

Usage: floodget.py server:port /url/file?argument1=value1 username password
number_of_threads
So: floodget.py server.com:8080 /showmachine_html username pass 100

I use either 100 or 1000 threads. All should be well. Now try:

http://zope.server:port/showmachine_html?machineid=wildfire.net.ic.ac.uk

I get failures and the child threads dying quickly with only 5-25 threads.

Regards,
Phil

+----------------------------------+
| Phil Mayers, Network Support     |
| Centre for Computing Services    |
| Imperial College                 |
+----------------------------------+  

-----Original Message-----
From: Chris McDonough [mailto:chrism@digicool.com]
Sent: 05 April 2001 18:06
To: Chris McDonough; Thomas B. Passin; zope@zope.org
Subject: Re: [Zope] ZServer *still* dying - help?


Wait, no I *didnt* write a unit test for this.  Sorry!  I wrote a unit test
that sends lots of named parameters to a python script, not a dtml method...

If you can boil this down to an always-fails case we can fix it.

----- Original Message -----
From: "Chris McDonough" <chrism@digicool.com>
To: "Thomas B. Passin" <tpassin@mitretek.org>; <zope@zope.org>
Sent: Thursday, April 05, 2001 12:56 PM
Subject: Re: [Zope] ZServer *still* dying - help?


> It still shouldn't be crashing.
>
> I wrote a unit test for this!!  (testParam26 in the test suite) ;-)
Wonder
> if it passes... it does.  Darn.
>
> What Zope version is this?
>
> ----- Original Message -----
> From: "Thomas B. Passin" <tpassin@mitretek.org>
> To: <zope@zope.org>
> Sent: Thursday, April 05, 2001 12:49 PM
> Subject: Re: [Zope] ZServer *still* dying - help?
>
>
> > I don't know what's happening, but what about attaching the params to
the
> > REQUEST, then you don't have to send them separately.  Of course, you'd
> have
> > to rewrite show_html a bit, but it shouldn't take much doing.
> >
> > Then you would write things like
> > ...
> > <dtml-call "REQUEST.set('param1',m.param1)">
> > ...
> >  print container.machine.show_html(context,REQUEST)
> >
> > Or make the separate params into a single python list and pass the list:
> >
> > params=[m.param1,m.param2,...]
> > print container.machine.show_html(context,REQUEST,params)
> >
> > Cheers,
> >
> > Tom P
> >
> > Mayers, Philip J asked -
> >
> > >
> > > What's happening - I have a PythonScript that does this:
> > >
> > > m = container.machine.SQL_get(machineid=machineid)[0]
> > > print container.machine.show_html(context,REQUEST,
> > >                                   param1=m.param1,
> > >                                   param2=m.param2,
> > >                                   param3=m.param3,
> > >                                   param4=m.param4,
> > >                                   param5=m.param5,
> > >                                   param6=m.param6,
> > >                                   param7=m.param7,
> > >                                   param8=m.param8,
> > >                                   param9=m.param9,
> > >                                   param0=m.param0)
> > > return printed
> > >
> > > show_html is a DTML document. When called at "high" speed (2-3 times a
> > > second) by URL traversal (i.e. GETing
> > > http://site.name/Zope/path/pythonscript?machineid=whatever) this
causes
> > > either (in order of likelihood):
> > >  ...
> >
> > > *But*, if I reduce the number of named parameters to the DTML method
> (when
> > > of course it doesn't render properly) then everything's OK. The
current
> > code
> > > dies if there are >8 named parameters. But it seems to vary. I thought
> > that
> > > the parameters had to be records from an SQL query, but now I'm not so
> > sure.
> > >
> >
> >
> >
> > _______________________________________________
> > Zope maillist  -  Zope@zope.org
> > http://lists.zope.org/mailman/listinfo/zope
> > **   No cross posts or HTML encoding!  **
> > (Related lists -
> >  http://lists.zope.org/mailman/listinfo/zope-announce
> >  http://lists.zope.org/mailman/listinfo/zope-dev )
> >
>
>
> _______________________________________________
> Zope maillist  -  Zope@zope.org
> http://lists.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists -
>  http://lists.zope.org/mailman/listinfo/zope-announce
>  http://lists.zope.org/mailman/listinfo/zope-dev )
>


_______________________________________________
Zope maillist  -  Zope@zope.org
http://lists.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope-dev )