Re: [Zope-dev] Call Profiler strangeness - lots of ZODB transactions

2002-04-08 Thread Richard Jones

On Tue, 26 Mar 2002 21:29, Toby Dickenson wrote:
 On Tue, 26 Mar 2002 15:30:56 +1100, Richard Jones

 [EMAIL PROTECTED] wrote:
 I'm investigating why our product ZODB is growing when it shouldn't. I've
 found that the undo log has entries in it every five minutes saying
 Installed product CallProfiler by Zope. More infrequently (not
  regularly) we also have Installed product ZOracleDA by Zope.

 Was zope restarting (or being restarted) every five minutes?

No, but it is being pinged. By that, I mean that we have a script that tries 
to access the ZEO server every five minutes to make sure it's all OK. The 
script does the following::

  import sys, os
  sys.path.append('/app/zope/zopecontrol_code/')
  sys.path.insert(0, '/app/zope/zopecontrol_code/lib/python')
  os.environ['ZEOPORT'] = '8076'
  os.environ['ZEOHOST'] = 'devhost1.off.ekorp.com'
  import Zope
  # now do stuff with the Zope.app() (we don't actually have to do anything
  # to trigger the ZODB note generation - the import is enough)

Now, the problem lies in the way that the CallProfiler gets itself into the 
Control Panel. This code was copied from the LeakFinder product, so I assume 
it'll have the same problem. The code is::

 def installControlPanel(context, panelClass):
from App.ApplicationManager import ApplicationManager
from Acquisition import aq_base
app = context._ProductContext__app
cp = app.Control_Panel
id = panelClass.id
if 0: # Enable to clean up the control panel.
try: del cp._objects
except: pass
cp.id # Unghostify.
if hasattr(cp, id):
return cp._getOb(id)
if cp.__dict__.has_key('_objects'):
# _objects has been overridden.  We have to persist.
existing = getattr(aq_base(cp), id, None)
if existing is None or existing.__class__ != panelClass:
cp._setObject(id, panelClass())
else:
# Don't persist what we don't have to.
objects = ApplicationManager._objects
objects = filter(lambda o, id=id: o['id'] != id, objects)
ApplicationManager._objects = objects + (
{'id':id, 'meta_type':panelClass.meta_type},)
try: delattr(cp, id)
except: pass
setattr(ApplicationManager, id, panelClass())
return cp._getOb(id)

Where panelClass is my Product's class.

When the ping script imports Zope, the product is installed. If it's 
installed as a regular product, using context.registerClass, all is OK. If 
it is installed using the above function, I get ZODB transaction notes of the 
form Installed product CallProfiler by Zope   2002-04-08 11:14:10 PM.

It's all a bit black magic for me though. I honestly don't know why half of 
the function above actually exists. I'm going to keep looking though, but if 
someone could help, I'd be extremely grateful.


Richard


___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )



Re: [Zope-dev] Call Profiler strangeness - lots of ZODB transactions

2002-04-08 Thread Richard Jones

On Tue, 9 Apr 2002 09:27, Richard Jones wrote:
 On Tue, 26 Mar 2002 21:29, Toby Dickenson wrote:
  On Tue, 26 Mar 2002 15:30:56 +1100, Richard Jones
 
  [EMAIL PROTECTED] wrote:
  I'm investigating why our product ZODB is growing when it shouldn't.
   I've found that the undo log has entries in it every five minutes
   saying Installed product CallProfiler by Zope. More infrequently (not
   regularly) we also have Installed product ZOracleDA by Zope.
 
  Was zope restarting (or being restarted) every five minutes?

 No, but it is being pinged. By that, I mean that we have a script that
 tries to access the ZEO server every five minutes to make sure it's all OK.
 The script does the following::

   import sys, os
   sys.path.append('/app/zope/zopecontrol_code/')
   sys.path.insert(0, '/app/zope/zopecontrol_code/lib/python')
   os.environ['ZEOPORT'] = '8076'
   os.environ['ZEOHOST'] = 'devhost1.off.ekorp.com'
   import Zope
   # now do stuff with the Zope.app() (we don't actually have to do anything
   # to trigger the ZODB note generation - the import is enough)

Setting the environment var ZEO_CLIENT stops the message - but I guess I'd 
like to know why this product is causing the message when none of the others 
are. It's all due to the code in installControlPanel, and I'd rather it not 
be dodgy :)


Richard


___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )



Re: [Zope-dev] Call Profiler strangeness - lots of ZODB transactions

2002-03-26 Thread Toby Dickenson

On Tue, 26 Mar 2002 15:30:56 +1100, Richard Jones
[EMAIL PROTECTED] wrote:

I'm investigating why our product ZODB is growing when it shouldn't. I've 
found that the undo log has entries in it every five minutes saying 
Installed product CallProfiler by Zope. More infrequently (not regularly) 
we also have Installed product ZOracleDA by Zope.

Was zope restarting (or being restarted) every five minutes?



Toby Dickenson
[EMAIL PROTECTED]

___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists -
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )