Hi,

this is nasty. We detected a couple of hangs with a Zope 2.7.7 final and
(using the DeadlockDebugger) we found this situation in every of the
four threads: (See attached file for complete listing of all threads)

Threads traceback dump at 2005-10-05 14:14:07

Thread 16386 (GET 
/psdsite/psd/niProductGroupsContainer/5/psdsite/vendoOrderItem.gif):
  File "/home/bpm/zope/lib/python/ZServer/PubCore/ZServerPublisher.py", line 
23, in __init__
    response=response)
  File "/home/bpm/instance/Products/ZopeProfiler/MonkeyPatcher.py", line 35, in 
__call__
    return self._function(*args,**kw)
  File "/home/bpm/instance/Products/ZopeProfiler/ZopeProfiler.py", line 352, in 
_profilePublishModule
    request=request, response=response)
  File "/home/bpm/zope/lib/python/ZPublisher/Publish.py", line 384, in 
publish_module
    environ, debug, request, response)
  File "/home/bpm/zope/lib/python/ZPublisher/Publish.py", line 175, in 
publish_module_standard
    response = publish(request, module_name, after_list, debug=debug)
  File 
"/home/bpm/instance/Products/PlacelessTranslationService/PatchStringIO.py", 
line 51, in new_publish
    x = Publish.old_publish(request, module_name, after_list, debug)
  File "/home/bpm/zope/lib/python/ZPublisher/Publish.py", line 107, in publish
    transactions_manager.commit()
  File "/home/bpm/zope/lib/python/Zope/App/startup.py", line 222, in commit
    get_transaction().commit()
  File "/home/bpm/zope/lib/python/ZODB/Transaction.py", line 240, in commit
    self._commit_begin(jars, subjars, subtransaction)
  File "/home/bpm/zope/lib/python/ZODB/Transaction.py", line 348, in 
_commit_begin
    jar.tpc_begin(self)
  File "/home/bpm/zope/lib/python/ZODB/Connection.py", line 729, in tpc_begin
    self._storage.tpc_begin(transaction)
  File "/home/bpm/zope/lib/python/ZODB/BaseStorage.py", line 163, in tpc_begin
    self._commit_lock_acquire()

We then looked at the locks in BaseStorage, and what I found is that in 
tpc_finish, the commit_lock
will be freed in any case (using a finally clause) whereas in tpc_abort, there 
might be a race condition
that does not free the commit_lock. (the finally clause only covers a second, 
different lock).

Additionally, we are using Ape running on a postgres backend, so this might 
trigger 
some unusual side effects, maybe this possible race condition.

(If someone has another suspicion where this hang might come from, I'm all 
your's to listen)

Best regards,
Christian

-- 
gocept gmbh & co. kg - schalaunische str. 6 - 06366 koethen - germany
www.gocept.com - [EMAIL PROTECTED] - phone +49 3496 30 99 112 -
fax +49 3496 30 99 118 - zope and plone consulting and development
Threads traceback dump at 2005-10-05 14:14:07

Thread 16386 (GET 
/psdsite/psd/niProductGroupsContainer/5/psdsite/vendoOrderItem.gif):
  File "/home/bpm/zope/lib/python/ZServer/PubCore/ZServerPublisher.py", line 
23, in __init__
    response=response)
  File "/home/bpm/instance/Products/ZopeProfiler/MonkeyPatcher.py", line 35, in 
__call__
    return self._function(*args,**kw)
  File "/home/bpm/instance/Products/ZopeProfiler/ZopeProfiler.py", line 352, in 
_profilePublishModule
    request=request, response=response)
  File "/home/bpm/zope/lib/python/ZPublisher/Publish.py", line 384, in 
publish_module
    environ, debug, request, response)
  File "/home/bpm/zope/lib/python/ZPublisher/Publish.py", line 175, in 
publish_module_standard
    response = publish(request, module_name, after_list, debug=debug)
  File 
"/home/bpm/instance/Products/PlacelessTranslationService/PatchStringIO.py", 
line 51, in new_publish
    x = Publish.old_publish(request, module_name, after_list, debug)
  File "/home/bpm/zope/lib/python/ZPublisher/Publish.py", line 107, in publish
    transactions_manager.commit()
  File "/home/bpm/zope/lib/python/Zope/App/startup.py", line 222, in commit
    get_transaction().commit()
  File "/home/bpm/zope/lib/python/ZODB/Transaction.py", line 240, in commit
    self._commit_begin(jars, subjars, subtransaction)
  File "/home/bpm/zope/lib/python/ZODB/Transaction.py", line 348, in 
_commit_begin
    jar.tpc_begin(self)
  File "/home/bpm/zope/lib/python/ZODB/Connection.py", line 729, in tpc_begin
    self._storage.tpc_begin(transaction)
  File "/home/bpm/zope/lib/python/ZODB/BaseStorage.py", line 163, in tpc_begin
    self._commit_lock_acquire()

Thread 32771 (GET 
/psdsite/psd/niProductGroupsContainer/5/psdsite/vendoOrder.gif):
  File "/home/bpm/zope/lib/python/ZServer/PubCore/ZServerPublisher.py", line 
23, in __init__
    response=response)
  File "/home/bpm/instance/Products/ZopeProfiler/MonkeyPatcher.py", line 35, in 
__call__
    return self._function(*args,**kw)
  File "/home/bpm/instance/Products/ZopeProfiler/ZopeProfiler.py", line 352, in 
_profilePublishModule
    request=request, response=response)
  File "/home/bpm/zope/lib/python/ZPublisher/Publish.py", line 384, in 
publish_module
    environ, debug, request, response)
  File "/home/bpm/zope/lib/python/ZPublisher/Publish.py", line 175, in 
publish_module_standard
    response = publish(request, module_name, after_list, debug=debug)
  File 
"/home/bpm/instance/Products/PlacelessTranslationService/PatchStringIO.py", 
line 51, in new_publish
    x = Publish.old_publish(request, module_name, after_list, debug)
  File "/home/bpm/zope/lib/python/ZPublisher/Publish.py", line 107, in publish
    transactions_manager.commit()
  File "/home/bpm/zope/lib/python/Zope/App/startup.py", line 222, in commit
    get_transaction().commit()
  File "/home/bpm/zope/lib/python/ZODB/Transaction.py", line 240, in commit
    self._commit_begin(jars, subjars, subtransaction)
  File "/home/bpm/zope/lib/python/ZODB/Transaction.py", line 348, in 
_commit_begin
    jar.tpc_begin(self)
  File "/home/bpm/zope/lib/python/ZODB/Connection.py", line 729, in tpc_begin
    self._storage.tpc_begin(transaction)
  File "/home/bpm/zope/lib/python/ZODB/BaseStorage.py", line 163, in tpc_begin
    self._commit_lock_acquire()

Thread 49156 (GET 
/psdsite/psd/niProductGroupsContainer/5/497/psdcontainer_view):
  File "/home/bpm/zope/lib/python/ZServer/PubCore/ZServerPublisher.py", line 
23, in __init__
    response=response)
  File "/home/bpm/instance/Products/ZopeProfiler/MonkeyPatcher.py", line 35, in 
__call__
    return self._function(*args,**kw)
  File "/home/bpm/instance/Products/ZopeProfiler/ZopeProfiler.py", line 352, in 
_profilePublishModule
    request=request, response=response)
  File "/home/bpm/zope/lib/python/ZPublisher/Publish.py", line 384, in 
publish_module
    environ, debug, request, response)
  File "/home/bpm/zope/lib/python/ZPublisher/Publish.py", line 175, in 
publish_module_standard
    response = publish(request, module_name, after_list, debug=debug)
  File 
"/home/bpm/instance/Products/PlacelessTranslationService/PatchStringIO.py", 
line 51, in new_publish
    x = Publish.old_publish(request, module_name, after_list, debug)
  File "/home/bpm/zope/lib/python/ZPublisher/Publish.py", line 107, in publish
    transactions_manager.commit()
  File "/home/bpm/zope/lib/python/Zope/App/startup.py", line 222, in commit
    get_transaction().commit()
  File "/home/bpm/zope/lib/python/ZODB/Transaction.py", line 240, in commit
    self._commit_begin(jars, subjars, subtransaction)
  File "/home/bpm/zope/lib/python/ZODB/Transaction.py", line 348, in 
_commit_begin
    jar.tpc_begin(self)
  File "/home/bpm/zope/lib/python/ZODB/Connection.py", line 729, in tpc_begin
    self._storage.tpc_begin(transaction)
  File "/home/bpm/zope/lib/python/ZODB/BaseStorage.py", line 163, in tpc_begin
    self._commit_lock_acquire()

Thread 65541 (GET 
/psdsite/psd/niProductGroupsContainer/5/psdsite/folder_icon.gif):
  File "/home/bpm/zope/lib/python/ZServer/PubCore/ZServerPublisher.py", line 
23, in __init__
    response=response)
  File "/home/bpm/instance/Products/ZopeProfiler/MonkeyPatcher.py", line 35, in 
__call__
    return self._function(*args,**kw)
  File "/home/bpm/instance/Products/ZopeProfiler/ZopeProfiler.py", line 352, in 
_profilePublishModule
    request=request, response=response)
  File "/home/bpm/zope/lib/python/ZPublisher/Publish.py", line 384, in 
publish_module
    environ, debug, request, response)
  File "/home/bpm/zope/lib/python/ZPublisher/Publish.py", line 175, in 
publish_module_standard
    response = publish(request, module_name, after_list, debug=debug)
  File 
"/home/bpm/instance/Products/PlacelessTranslationService/PatchStringIO.py", 
line 51, in new_publish
    x = Publish.old_publish(request, module_name, after_list, debug)
  File "/home/bpm/zope/lib/python/ZPublisher/Publish.py", line 107, in publish
    transactions_manager.commit()
  File "/home/bpm/zope/lib/python/Zope/App/startup.py", line 222, in commit
    get_transaction().commit()
  File "/home/bpm/zope/lib/python/ZODB/Transaction.py", line 240, in commit
    self._commit_begin(jars, subjars, subtransaction)
  File "/home/bpm/zope/lib/python/ZODB/Transaction.py", line 348, in 
_commit_begin
    jar.tpc_begin(self)
  File "/home/bpm/zope/lib/python/ZODB/Connection.py", line 729, in tpc_begin
    self._storage.tpc_begin(transaction)
  File "/home/bpm/zope/lib/python/ZODB/BaseStorage.py", line 163, in tpc_begin
    self._commit_lock_acquire()

End of dump

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zodb-dev

Reply via email to