-
-
Notifications
You must be signed in to change notification settings - Fork 32k
Python shelve __del__ ignored exception #83383
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
I'm using my own implementation of the memoize by shelve module. In the attachment, there are 2 simple test cases which pass but the console there are a lot of messages like that: Exception ignored in: <function Shelf.__del__ at 0x0000023202F363A0>
Traceback (most recent call last):
File "C:\Miniconda2\envs\38_common\lib\shelve.py", line 162, in __del__
self.close()
File "C:\Miniconda2\envs\38_common\lib\shelve.py", line 144, in close
self.sync()
File "C:\Miniconda2\envs\38_common\lib\shelve.py", line 172, in sync
self.dict.sync()
File "C:\Miniconda2\envs\38_common\lib\dbm\dumb.py", line 129, in _commit
with self._io.open(self._dirfile, 'w', encoding="Latin-1") as f:
PermissionError: [Errno 13] Permission denied: 'C:\\project\\tests\\test_memoize_tmp_t5tai08p\\memoize_test_file.dat.dir'
Exception ignored in: <function _Database.close at 0x0000023202EF9040>
Traceback (most recent call last):
File "C:\Miniconda2\envs\38_common\lib\dbm\dumb.py", line 274, in close
self._commit()
File "C:\Miniconda2\envs\38_common\lib\dbm\dumb.py", line 129, in _commit
with self._io.open(self._dirfile, 'w', encoding="Latin-1") as f:
PermissionError: [Errno 13] Permission denied: 'C:\\project\\tests\\test_memoize_tmp_t5tai08p\\memoize_test_file.dat.dir' Basically, the main issue can be explained like that - Python dbm.dumb._Database should maintain self._modified the attribute in the right way(set it to False) after the _commit method. Later I will try to make changes in the dbm.dumb module and run Python internal tests for that modification to see any regression, if not will add PR here. |
… open() and sync() The directory file for a newly created database is now created immediately after opening instead of deferring this until synchronizing or closing.
It is not a bug. If you do not close the database explicitly, it will be implicitly closed in the But it is good idea to mark the database as unmodified after synchronization or creation and avoid any writing in |
…) and sync() (GH-114560) The directory file for a newly created database is now created immediately after opening instead of deferring this until synchronizing or closing.
… open() and sync() (pythonGH-114560) The directory file for a newly created database is now created immediately after opening instead of deferring this until synchronizing or closing.
… open() and sync() (pythonGH-114560) The directory file for a newly created database is now created immediately after opening instead of deferring this until synchronizing or closing.
Uh oh!
There was an error while loading. Please reload this page.
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
Linked PRs
The text was updated successfully, but these errors were encountered: