Issue 1891883
Created on 2008-02-12 11:55 by nikratio, last changed 2016-07-17 14:48 by rouilj.
Messages | |||
---|---|---|---|
msg2521 | Author: [hidden] (nikratio) | Date: 2008-02-12 11:55 | |
I was making some changes in the database using the python interface. At some point I removed a message: db.msg.destroy("230") Afterwards I iterate over all issues: for id in db.issue.list(): print "Checking", id priority = db.issue.get(id, "priority") .... this failed with the error: .. Checking 97 Checking 98 Checking 99 Traceback (most recent call last): File "./check-tracker.py", line 118, in ? priority = db.issue.get(id, "priority") File "/home/nikratio/stow//lib/python2.4/site-packages/roundup/backends/rdbms_common.py", line 1467, in get d = self.db.getnode(self.classname, nodeid) File "/home/nikratio/stow//lib/python2.4/site-packages/roundup/backends/rdbms_common.py", line 987, in getnode del self.cache[self.cache_lru.pop()] KeyError: ('msg', '280') I couldn't quite understand why retrieving the priority of issue 99 would result in a key error mentioning message 280. msg280 is bound to issue17 and issue99 only has one message msg159. Nevertheless I tried to add db.commit() after deleting the message, but the error persisted. However, if I only deleted the message, committed and then restarted the script to only iterate through the issues, everything worked fine. I therefore suspect that there is some problem with the internal caching. Note: It seems that I can also reproduce this most of the time with other issues as well. |
|||
msg2522 | Author: [hidden] (nikratio) | Date: 2008-02-22 11:17 | |
I have investigated this a bit more and I am now able to reproduce it every time that I delete in issue. Unless I reopen the database (using instance.open("path_to_db")), a loop over all issues will fail with the above KeyError. |
|||
msg5636 | Author: [hidden] (rouilj) | Date: 2016-06-26 19:58 | |
I realize it has been a while, but what backend were you using and do you have a simple test case that I can run? Also you are a bit of an edge case. You shouldn't be deleting items. Retiring them is the preferred method to keep referential integrity. Why did you want to delete the message entry? Also note that message content/text isn't kept in the db, it's in a disk file under the tracker's db/file directory IIRC. So if you had a password or something submitted deleting the message doesn't delete the message content. -- rouilj |
|||
msg5865 | Author: [hidden] (rouilj) | Date: 2016-07-17 14:48 | |
Closing as abandoned. Not surprising after all this time. |
History | |||
---|---|---|---|
Date | User | Action | Args |
2016-07-17 14:48:07 | rouilj | set | status: open -> closed resolution: remind -> abandoned messages: + msg5865 |
2016-06-26 19:58:52 | rouilj | set | resolution: remind messages: + msg5636 nosy: + rouilj |
2008-02-12 11:55:28 | nikratio | create |