On Jun 25, 2009, at 4:46 AM, Izak Burger wrote: > Hi all, > > This is a zope issue that I think is probably zodb related. I've been > seeing this behaviour for a couple of years now. When I inspect > /proc/PID/fd (on a linux machine, this lists the open file descriptors > held by the process with process id PID), I see many descriptors that > point to open files, eg: > > $ ls -go /proc/15431/fd | grep deleted > lrwx------ 1 64 2009-06-25 10:09 13 -> /var/tmp/tmptBEWCx.tbuf > (deleted) > lrwx------ 1 64 2009-06-25 10:09 14 -> /var/tmp/tmpKSuzMN (deleted) > lrwx------ 1 64 2009-06-25 10:09 6 -> /var/tmp/tmp2HUAnn.tbuf > (deleted) > lrwx------ 1 64 2009-06-25 10:09 7 -> /var/tmp/tmpex5QmJ (deleted) > > This gets worse over time until we run out of diskspace, with a trace > back like this (somewhat sanitised to protect the guilty): > > ".../parts/zope2/lib/python/transaction/_manager.py",line 110, in > savepoint return self.get().savepoint(optimistic) File > ".../parts/zope2/lib/python/transaction/_transaction.py", line 312, in > savepoint self._saveAndRaiseCommitishError() # reraises! > ".../parts/zope2/lib/python/transaction/_transaction.py", line 422, in > _saveAndRaiseCommitishError t, v, tb = > self._saveAndGetCommitishError() File > ".../parts/zope2/lib/python/transaction/_transaction.py", line 309, in > savepoint savepoint = Savepoint(self, optimistic, *self._resources) > File > ".../parts/zope2/lib/python/transaction/_transaction.py", line 737, in > __init__ savepoint = savepoint() > ".../parts/zope2/lib/python/ZODB/Connection.py", line 1046, in > savepoint > self._commit(None) > ".../parts/zope2/lib/python/ZODB/Connection.py",line 555, in _commit > self._store_objects(ObjectWriter(obj), transaction) > ".../parts/zope2/lib/python/ZODB/Connection.py",line 583, in > _store_objects s = self._storage.store(oid, serial, p, self._version, > transaction) > ".../parts/zope2/lib/python/ZODB/Connection.py", line 1180, in store > self._file.write(data) IOError: [Errno 28] No space left on device > > Naturally a restart solves the problem immediately, but this is > still a bug. > > Before I dive into the code and attempt to find the problem, I thought > I'd post first, partly to report the problem, but at the same time to > find out if anyone has seen this and if perhaps a fix is already > available.
I haven't seen this and, looking at the code on the trunk, I see no reason why many savepoint temporary storages or ZEO transaction buffers would be kept open. Savepoint temporary storages are closed after use and a single transaction buffer if created per ZEO client. It is kept optn for the life of the client. Jim -- Jim Fulton Zope Corporation _______________________________________________ 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