<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent changes to bugs</title><link href="https://sourceforge.net/p/dirstorage/bugs/" rel="alternate"/><link href="https://sourceforge.net/p/dirstorage/bugs/feed.atom" rel="self"/><id>https://sourceforge.net/p/dirstorage/bugs/</id><updated>2005-01-21T13:51:46Z</updated><subtitle>Recent changes to bugs</subtitle><entry><title>DSToolkit is permanently disconnected if ZEO restarts</title><link href="https://sourceforge.net/p/dirstorage/bugs/9/" rel="alternate"/><published>2005-01-21T13:51:46Z</published><updated>2005-01-21T13:51:46Z</updated><author><name>Paul Winkler</name><uri>https://sourceforge.net/u/slinkp/</uri></author><id>https://sourceforge.netee52cbfcc91c021470428c0852745a216ef46cff</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;As reported to the mailing list on 2005-01-04. Toby&lt;br /&gt;
says he can't reproduce with Zope 2.6.4.  Might be a&lt;br /&gt;
ZODB bug? &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;I can reliably reproduce this on a fresh zope + zeo&lt;br /&gt;
instance              &lt;br /&gt;
with zope 2.7.3 and a new DirectoryStorage (1.1.9).   &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;How to reproduce:                                   &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;0) create a zope + zeo instance (i.e. use&lt;br /&gt;
mkzopeinstance and mkzeoinstance;    ok to use the same&lt;br /&gt;
directory for both).&lt;br /&gt;
Create a directory storage in the instance.         &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;1) configure zeo.conf to use directorystorage:      &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;%import DirectoryStorage&lt;br /&gt;
# Main DirectoryStorage database&lt;br /&gt;
&amp;lt;directorystorage main&amp;gt;&lt;br /&gt;
path $INSTANCE/var/DirStor&lt;br /&gt;
read-only off&lt;br /&gt;
&amp;lt;/directorystorage&amp;gt;&lt;/p&gt;
&lt;p&gt;2) configure zope.conf to use zeo:&lt;/p&gt;
&lt;p&gt;&amp;lt;zodb_db main&amp;gt;&lt;br /&gt;
mount-point /&lt;br /&gt;
&amp;lt;zeoclient&amp;gt;&lt;br /&gt;
read-only off&lt;br /&gt;
server localhost:8100  # or whatever port      &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;storage main&lt;br /&gt;
name zeostorage&lt;br /&gt;
var $INSTANCE/var&lt;br /&gt;
&amp;lt;/zeoclient&amp;gt;&lt;br /&gt;
&amp;lt;/zodb_db&amp;gt;&lt;/p&gt;
&lt;p&gt;3) start zeo&lt;br /&gt;
4) start zope &lt;br /&gt;
5) confirm that everything works ok, i.e. navigate&lt;br /&gt;
around the ZMI a bit.  &lt;br /&gt;
6) add a DirectoryStorageToolkit instance to zope   &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;7) click on the DSToolkit - the management page should&lt;br /&gt;
come up ok&lt;/p&gt;
&lt;p&gt;8) restart zeo. wait a few seconds for zope to&lt;br /&gt;
reconnect.                     &lt;br /&gt;
9) confirm that everything works - i.e. you can&lt;br /&gt;
navigate the                  &lt;br /&gt;
ZMI, add new objects, etc.                    &lt;br /&gt;
10) click on the DSToolkit instance. You get&lt;br /&gt;
DisconnectedError.&lt;/p&gt;
&lt;p&gt;11) restart zope.                 &lt;br /&gt;
12) all is OK now including the DSToolkit. &lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>AttributeError: 'None' object has no attribute 'group'</title><link href="https://sourceforge.net/p/dirstorage/bugs/8/" rel="alternate"/><published>2003-03-17T11:33:05Z</published><updated>2003-03-17T11:33:05Z</updated><author><name>Toby Dickenson</name><uri>https://sourceforge.net/u/htrd/</uri></author><id>https://sourceforge.net02bced4ca7ac5b93cb1f129d50c6a7d34bf5c43a</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;This exception might be raised at startup (but with&lt;br /&gt;
different line numbers)&lt;/p&gt;
&lt;p&gt;File&lt;br /&gt;
&amp;amp;quot;/home/tdickenson/projects/DirectoryStorage/replica.py&amp;amp;quot;,&lt;br /&gt;
line 125, in prep_replica&lt;br /&gt;
self.fs.engage()&lt;br /&gt;
File&lt;br /&gt;
&amp;amp;quot;/home/tdickenson/projects/DirectoryStorage/LocalFilesystem.py&amp;amp;quot;,&lt;br /&gt;
line 83, in engage&lt;br /&gt;
self._recovery()&lt;br /&gt;
File&lt;br /&gt;
&amp;amp;quot;/home/tdickenson/projects/DirectoryStorage/LocalFilesystem.py&amp;amp;quot;,&lt;br /&gt;
line 296, in _recovery&lt;br /&gt;
if match.group(1)=='done':&lt;br /&gt;
AttributeError: 'None' object has no attribute 'group'&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>packing gives RuntimeError: maximum recursion depth exceeded</title><link href="https://sourceforge.net/p/dirstorage/bugs/7/" rel="alternate"/><published>2003-01-17T11:49:01Z</published><updated>2003-01-17T11:49:01Z</updated><author><name>Toby Dickenson</name><uri>https://sourceforge.net/u/htrd/</uri></author><id>https://sourceforge.net34427737fa5db10dc091b8376d98482f8decd24f</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;On one of my bigger storages I have started seeing an error when &lt;br /&gt;
packing: RuntimeError: maximum recursion depth&lt;br /&gt;
Followed by a traceback of roughly 80 calls to &lt;br /&gt;
_mark_reachable_objects &lt;/p&gt;
&lt;p&gt;The recursion limit is set to 1000, so why do we get this after roughly &lt;br /&gt;
80 calls? &lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>lost+found</title><link href="https://sourceforge.net/p/dirstorage/bugs/6/" rel="alternate"/><published>2003-01-14T13:13:05Z</published><updated>2003-01-14T13:13:05Z</updated><author><name>Toby Dickenson</name><uri>https://sourceforge.net/u/htrd/</uri></author><id>https://sourceforge.net48c510fd64eb9f23679ec4473a053ff98131c213</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;It is currently impossible to recover from a crash which dumps files in&lt;br /&gt;
lost+found.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;The best answer is to not use a filesystem where this is a possibility. &lt;br /&gt;
All recommended filesystems are safe from this.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;One problem comes from 'current  revision pointer' files. They dont &lt;br /&gt;
have enough redundant content to reconstruct their filename. &lt;/p&gt;
&lt;p&gt;Can we reliably put files into the right journal directory to know &lt;br /&gt;
whether or not they had been commited? &lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>backup.py exit codes</title><link href="https://sourceforge.net/p/dirstorage/bugs/5/" rel="alternate"/><published>2003-01-06T08:49:05Z</published><updated>2003-01-06T08:49:05Z</updated><author><name>Toby Dickenson</name><uri>https://sourceforge.net/u/htrd/</uri></author><id>https://sourceforge.net7baed05f3e62edb362f6656a751131652d4c963c</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;The intention is that backup.py exit with a zero code&lt;br /&gt;
if and only if there is no problem.&lt;/p&gt;
&lt;p&gt;backup.py contains:&lt;br /&gt;
if os.system('whatsnew.py|cpio|gzip&amp;amp;gt;file'):&lt;br /&gt;
error(1)&lt;/p&gt;
&lt;p&gt;But the shell discards the exit code of all except the&lt;br /&gt;
last command, gzip.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>missing old files</title><link href="https://sourceforge.net/p/dirstorage/bugs/4/" rel="alternate"/><published>2002-06-03T22:29:47Z</published><updated>2002-06-03T22:29:47Z</updated><author><name>Toby Dickenson</name><uri>https://sourceforge.net/u/htrd/</uri></author><id>https://sourceforge.net43c827bb5f6e5f833886c2b0f420689cf95ffe11</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;There are lost of places in the code that silently&lt;br /&gt;
ignore ENOENT errors when opening files. This could&lt;br /&gt;
mask bugs.&lt;/p&gt;
&lt;p&gt;This is necessary because Full does not perform its&lt;br /&gt;
packing atomically. It is possible for one old file to&lt;br /&gt;
refer to another old file that does not exist, if&lt;br /&gt;
packing is aborted.&lt;/p&gt;
&lt;p&gt;If packing was atomic the only two cross-file&lt;br /&gt;
references that needs this check for ENOENT are:&lt;br /&gt;
1. the object file's reference to his previous revision&lt;br /&gt;
2. the transaction file's reference to the previous&lt;br /&gt;
transaction.&lt;/p&gt;
&lt;p&gt;Proposed resolution: keep track of the most recent pack&lt;br /&gt;
threshold time. raise an error if a file is missing&lt;br /&gt;
which dates from after this pack time.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>cannot use with Solaris</title><link href="https://sourceforge.net/p/dirstorage/bugs/3/" rel="alternate"/><published>2002-06-02T14:19:45Z</published><updated>2002-06-02T14:19:45Z</updated><author><name>Yukimasa TAKANO</name><uri>https://sourceforge.net/u/takano/</uri></author><id>https://sourceforge.neta7b8ed4cd43f17865ddca567516ed5bdabded3ed</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;cannot use with Zope-2.5.1 for Solaris (dist by Zope corp).&lt;br /&gt;
on PosixFilesystem,&lt;/p&gt;
&lt;p&gt;from posix import fsync, fdatasync&lt;/p&gt;
&lt;p&gt;and abort by non existent &amp;amp;quot;fdatasync&amp;amp;quot;.&lt;/p&gt;
&lt;p&gt;I will more research and come back again later.&lt;br /&gt;
wait a moment.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>file created by root</title><link href="https://sourceforge.net/p/dirstorage/bugs/2/" rel="alternate"/><published>2002-05-31T15:19:15Z</published><updated>2002-05-31T15:19:15Z</updated><author><name>Yukimasa TAKANO</name><uri>https://sourceforge.net/u/takano/</uri></author><id>https://sourceforge.net97df35d3bf5e2fe32667a3a8d80a9fe7035e253f</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;z2.py start by root with &amp;amp;quot;-u&amp;amp;quot; option,&lt;br /&gt;
and storage files are created by root.&lt;/p&gt;
&lt;p&gt;then, zope fallback to specified user of &amp;amp;quot;-u&amp;amp;quot; option,&lt;br /&gt;
and cannot read storage files. lock up.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>cannot load additional product</title><link href="https://sourceforge.net/p/dirstorage/bugs/1/" rel="alternate"/><published>2002-05-31T15:13:25Z</published><updated>2002-05-31T15:13:25Z</updated><author><name>Yukimasa TAKANO</name><uri>https://sourceforge.net/u/takano/</uri></author><id>https://sourceforge.netedf40eb48a5a6b7703867901ee3471bdfd5441d1</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;when install new (any) product, this exception raised.&lt;/p&gt;
&lt;p&gt;2002-05-31T14:59:47 PANIC(300) z2 Startup exception&lt;br /&gt;
Traceback (innermost last):&lt;br /&gt;
File z2.py, line 497, in ?&lt;br /&gt;
File &amp;amp;lt;string&amp;amp;gt;, line 1, in ?&lt;br /&gt;
File /usr/share/zope/lib/python/Zope/__init__.py,&lt;br /&gt;
line 71, in ?&lt;br /&gt;
File /usr/share/zope/lib/python/OFS/Application.py,&lt;br /&gt;
line 418, in initialize&lt;br /&gt;
(Object: Zope)&lt;br /&gt;
File /usr/share/zope/lib/python/OFS/Application.py,&lt;br /&gt;
line 721, in install_standards&lt;br /&gt;
(Object: Zope)&lt;br /&gt;
File&lt;br /&gt;
/usr/share/zope/lib/python/App/FactoryDispatcher.py,&lt;br /&gt;
line 27, in __getitem__&lt;br /&gt;
File&lt;br /&gt;
/usr/share/zope/lib/python/App/FactoryDispatcher.py,&lt;br /&gt;
line 30, in __bobo_traverse__&lt;br /&gt;
File&lt;br /&gt;
/usr/share/zope/lib/python/App/ProductRegistry.py, line&lt;br /&gt;
157, in _getProducts&lt;br /&gt;
(Object: Zope)&lt;br /&gt;
AttributeError: Control_Panel&lt;/p&gt;
&lt;p&gt;SHORT REASON: last oid lost when initialize BaseStorage.&lt;/p&gt;
&lt;p&gt;AD-HOC SOLUTION: change BaseDirectoryStorage to below.&lt;/p&gt;
&lt;p&gt;def __init__(self, filesystem, argv=None):&lt;br /&gt;
self.filesystem = filesystem&lt;br /&gt;
if argv:&lt;br /&gt;
self._main(argv)&lt;br /&gt;
else:&lt;br /&gt;
self._real_init()&lt;br /&gt;
oid = self._oid&lt;br /&gt;
BaseStorage.__init__(self, filesystem.name())&lt;br /&gt;
self._oid = oid&lt;/p&gt;
&lt;p&gt;OR:&lt;/p&gt;
&lt;p&gt;def __init__(self, filesystem, argv=None):&lt;br /&gt;
self.filesystem = filesystem&lt;br /&gt;
if argv:&lt;br /&gt;
self._main(argv)&lt;br /&gt;
else:&lt;br /&gt;
self._real_init()&lt;br /&gt;
BaseStorage.__init__(self,&lt;br /&gt;
filesystem.name(), self)&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>