Skip to content

Commit bfdf695

Browse files
authored
Merge pull request #1898 from carver/only-delete-missing-storage
Only delete (account) storage values if they are present
2 parents bfdcf12 + 88e6914 commit bfdf695

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

eth/db/storage.py

+9-1
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,15 @@ def set(self, slot: int, value: int) -> None:
210210
if value:
211211
self._journal_storage[key] = rlp.encode(value)
212212
else:
213-
del self._journal_storage[key]
213+
try:
214+
current_val = self._journal_storage[key]
215+
except KeyError:
216+
# deleting an empty key has no effect
217+
return
218+
else:
219+
if current_val != b'':
220+
# only try to delete the value if it's present
221+
del self._journal_storage[key]
214222

215223
def delete(self) -> None:
216224
self.logger.debug2(

newsfragments/1898.bugfix.rst

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
When double-deleting a storage slot, got ``KeyError: (b'\x03', 'key could not be deleted in
2+
JournalDB, because it was missing')``. This was fallout from `#1893
3+
<https://github.com/ethereum/py-evm/pull/1893>`_

0 commit comments

Comments
 (0)