>
>
> > It looks like its related with the mysql server being overloaded. But
>
>    I think you mean "restarted", not "overloaded", right?
>
> No, the mysql server is very loaded.


> > I still don't understand why.
> > I've been looking at the source and don't understand how this can
> > happen. I never call rollback in my source, and always make
> > transactions through doInTransaction.
>
>    doInTransaction() calls rollback() on any exception.
>
> I understand this.
rollBack is called on a Transaction object by doInTransaction.
But it just throws away the object just after, doesn't it?
This is why I don't understand how it can happen if I don't explicitely call
rollback myself.
Could it happen during the contruction of the Transaction object itself?
As you might see in the traceback, the error happens while the Transaction
is created.
My code isn't called yet...

I forgot to say. It looks that once this happened once, all upcoming
transactions fail the same way.

In the Transaction constructor:
class Transaction(object):
    def __init__(self, dbConnection):
        # this is to skip __del__ in case of an exception in this __init__
        self._obsolete = True
        self._dbConnection = dbConnection
        self._connection = dbConnection.getConnection()
        self._dbConnection._setAutoCommit(self._connection, 0)
        self.cache = CacheSet(cache=dbConnection.doCache)
        self._deletedCache = {}
        self._obsolete = False

_obsolete is set to True.
Then you have self._connection accessed.
So the __getattr__ method should be called, doesn't it?
__getattr__ first calls self.assertActive() which checks that _obsolete is
False.
So I wonder how this can work?



> > In the traceback I don't understand why there are missing step between
> > conn = old_conn.transaction() and self.assertActive(). It should go
> > through the Transaction constructor.
>
>    What connection have you assigned to hubNoCache? It seems it's a (rolled
> back) transaction, not a simple connection.
>
>
hubNoCache=ConnectionHub()
hubNoCache.processConnection = connectionForURI(database+'&cache=')
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
sqlobject-discuss mailing list
sqlobject-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss

Reply via email to