This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author aimacintyre
Recipients
Date 2003-12-23.00:04:36
SpamBayes Score
Marked as misclassified
Message-id
In-reply-to
Content
Logged In: YES 
user_id=250749

I can sympathise with your POV, but shelve has a 
documented restriction that it is not supported for multiuser 
user use without specific external support - that is multiple 
readers are Ok, but writing requires exclusive access to the 
shelve database.

As you are using it in such an environment, it is up to you to 
guarantee the required safety.  The error being reported is 
highly likely to be a consequence of your locking scheme 
being inadequate for use with the BerkeleyDB environment, at 
least on that system, and my suggestion that you take this 
up in a BerkeleyDB forum was directed at you getting 
sufficient information to improve your locking scheme to avoid 
the problem you see.

I think you are a little optimistic expecting the shelve module 
(let alone the anydbm module) to cope with exceptions arising 
from use outside its documented restrictions - and BerkeleyDB 
supports lots of capability beyond the scope of the 
functionality used by shelve and anydbm and the exceptions 
to go with that.

If you care about the shelve storage format, you can force 
the type of storage by creating an empty database of the 
format of your choice, provided that that format is supported 
by anydbm.  With a bit of care, you should be able to convert 
a shelve from one format to another, within the anydbm 
format support restriction.

While it might be nice to have some format control, anydbm's 
purpose is hide the database format/interface. If you care 
about the format, you're expected to use the desired 
interface module directly.
History
Date User Action Args
2007-08-23 14:18:52adminlinkissue857909 messages
2007-08-23 14:18:52admincreate