[storm] problem with commit() and store record missing

Gustavo Niemeyer gustavo at niemeyer.net
Mon Aug 20 18:17:20 BST 2007


Hello Shawn,

> when i get to a part of the thread loop that does self.store.commit(), i get
> a failure stating that a record that it is supposed to delete does not exist
> any longer. I guess that it is been removed by another process. Is there a
> way that i can safegaurd against that ? or should i just wrap it in a try:
> except: ?
> 
> just wondering if there is a better trick around it.

That indicates that the isolation level between your transactions are
not cache-friendly.  Ideally, a commit on another transaction should not
affect data that is seen on your running transaction.  Depending on
which database you're using, the procedure for achieving that might be
different.  Storm already tries to setup a good behavior on PostgreSQL
and SQLite by default, but if you're using MySQL, for instance, you have
to use the InnoDB engine.

Notice that this is not just about deleting objects.  Depending on the
database behavior, data changing during a transaction might create
other inconsistencies, even if an ORM is not in use.

-- 
Gustavo Niemeyer
http://niemeyer.net



More information about the storm mailing list