zope is selfrestarting: can't uninstall a product!
Hi! I've asked to the italian mailing list, but no reslut... so I try here. About 2 weeks ago I found a memory leak in a product for zope (ZPhotoSlides). Being furious about that, I went to the Products folder and deleted the folder containing the product, and moved all the photos to a beautiful BINS external gallery. The memory leak was corrected: the average RAM usage dropped from about 700MB to 65MB! But suddenly another problem raised: the zope server was restarting itself about every 30min! I went to events.log and found that before the "Shutting down with error code 1" lines, there where an error about a ZPhotoSlides module it couldn't load. So, I downloaded again the ZPhotoSlides product and placed it in the Products directory. Then I went to each of my plone sites and manually uninstalled the ZPhotoSlides product with the uninstall tool. Finally, I went to Zope Management Interface and deleted the ZPhotoSlides folder in Products, and the same on the Products folder on the filesystem. Then I restarted zope and all seemed OK. But, the restarting period is only bigger... about 3-6h. Then Zope crashes again and restart itself, for the same error (can't find a ZPhotoSlides module). Note that I didn't deleted the photo albums that where stored in the db, because there where ratings, comments etc... and I hope to recover them at a future ZPhotoSlides release. SO, WHAT SHOULD I DO????? I want Zope to FORGET about the EXISTENCE of ZPhotoSLides product, WITHOUT loosing all my data!!! Thanks!
daniele wrote at 2005-9-15 11:12 +0200:
.... I went to events.log and found that before the "Shutting down with error code 1" lines
Apparently, something in your Zope decides there is time for an "exit(1)". I would attack this situation with a C level debugger: Attach to the running Zope process. But a breakpoint on the C function "exit". Let Zope continue to run... When the something thinks it were time for "exit", you will enter the debugger and can analyse what this bad something is... -- Dieter
Dieter Maurer ha scritto:
daniele wrote at 2005-9-15 11:12 +0200:
.... I went to events.log and found that before the "Shutting down with error code 1" lines
Apparently, something in your Zope decides there is time for an "exit(1)".
I would attack this situation with a C level debugger:
Attach to the running Zope process. But a breakpoint on the C function "exit". Let Zope continue to run...
When the something thinks it were time for "exit", you will enter the debugger and can analyse what this bad something is...
I think this is not necessary: the event.log clearly say what is the problem. Here is a paste: ------ 2005-09-15T19:38:35 INFO(0) ZODB conflict error at /index_html/hacker/topicImage (1 conflicts since startup at 2005-09-15T08:51:57) ------ 2005-09-15T19:47:35 INFO(0) Plone Debug /hdb/zope/instance/Products/CMFBoard/skins/cmfboard/forum_add_topic_form.cpt: No default action specified for status success, content type ANY. Users of IE can submit pages using the return key, resulting in no button in the REQUEST. Please specify a default action for this case. ------ 2005-09-15T19:47:35 INFO(0) Plone Debug /hdb/zope/instance/Products/CMFBoard/skins/cmfboard/forum_add_topic_form.cpt: No default validators specified for content type ANY. Users of IE can submit pages using the return key, resulting in no button in the REQUEST. Please specify default validators for this case. ------ 2005-09-15T19:47:35 INFO(0) Plone Debug plone_utils.browserDefault Total failure getting the folderlisting action for the folder, "http://blog.daniele.homelinux.org/forum/gen" ------ 2005-09-15T19:47:40 INFO(0) Plone Debug /hdb/zope/instance/Products/CMFBoard/skins/cmfboard/forum_message_edit.cpt: No default action specified for status success, content type ANY. Users of IE can submit pages using the return key, resulting in no button in the REQUEST. Please specify a default action for this case. ------ 2005-09-15T19:47:40 INFO(0) Plone Debug /hdb/zope/instance/Products/CMFBoard/skins/cmfboard/forum_message_edit.cpt: No default validators specified for content type ANY. Users of IE can submit pages using the return key, resulting in no button in the REQUEST. Please specify default validators for this case. ------ 2005-09-15T20:09:15 ERROR(200) ZODB Couldn't load state for 0x01213c Traceback (most recent call last): File "/hdb/zope/lib/python/ZODB/Connection.py", line 600, in setstate self._set_ghost_state(obj, p) File "/hdb/zope/lib/python/ZODB/Connection.py", line 639, in _set_ghost_state state = unpickler.load() ImportError: No module named ZPhotoSlides.photo_edition.exif ------ 2005-09-15T20:09:16 INFO(0) Zope Shutting down with exit code 1 This is the same error, *every time* zope server restart itself. So the problem is that Zope can't "forget" ZPhotoSlides, and at a certain point it tries to load a module that doesn't exist anymore. I think, someone correct me please, that this module call is generated by the remaining ZPhotoSlides objects (my old galleries, with all the photos, comments and ratings). At a certain point, Zope tries to *unpickle* these objects: being them instances of a non-existing class, this unpickling generates the deathful error and zope restart (the second after, but the interval is less than a second as many restarts are at the exactly same time of the error). So my question is: if my reasoning is correct, is it possible save all the data pickled in my ZPhotoSlides objects (waiting a future release), avoiding the current autorestarting error??? And more: if all I have exposed is correct, that error could raise in any zope server where a class istance was created, pickled and stored in the ZODB, and then the class code was removed for any reason! When zope will try to unpickle the object, it will not find the original class and it will crash!? -- ----- it.scienza.chimica, 25/8/05:
che differenza c'è tra molarità, molalità e moralità? con le prime due puoi descrivere un politico. [dp] http://blog.daniele.homelinux.org
daniele wrote at 2005-9-16 00:57 +0200:
... ------ 2005-09-15T20:09:15 ERROR(200) ZODB Couldn't load state for 0x01213c Traceback (most recent call last): File "/hdb/zope/lib/python/ZODB/Connection.py", line 600, in setstate self._set_ghost_state(obj, p) File "/hdb/zope/lib/python/ZODB/Connection.py", line 639, in _set_ghost_state state = unpickler.load() ImportError: No module named ZPhotoSlides.photo_edition.exif ------ 2005-09-15T20:09:16 INFO(0) Zope Shutting down with exit code 1
This is the same error, *every time* zope server restart itself. So the problem is that Zope can't "forget" ZPhotoSlides, and at a certain point it tries to load a module that doesn't exist anymore.
But, in general, Zope does not perform an "exit(1)" in this case. You get the "ImportError" because you still have instances in your storage that references ZPhotoSlides. When these instances are touched, the "ImportError" occurs. However, Zope will create a fake object for the failing load and continue to run...
I think, someone correct me please, that this module call is generated by the remaining ZPhotoSlides objects (my old galleries, with all the photos, comments and ratings).
Yes.
At a certain point, Zope tries to *unpickle* these objects: being them instances of a non-existing class, this unpickling generates the deathful error
Yes.
and zope restart
Usually, not.
So my question is: if my reasoning is correct,
Partially. is it possible save all
the data pickled in my ZPhotoSlides objects (waiting a future release), avoiding the current autorestarting error???
You can make a backup copy of your storage and then delete the old galleries (you will see exceptions in your logfile). You can only get out the objects in a meaningful way, when you have a working "ZPhotoSlides" product installed. -- Dieter
participants (2)
-
daniele -
Dieter Maurer