I'm trying to understand the whole transaction mechanism in WebKit.
I attempted to subclass page calling it DatabasePage with methods
for connection management and hook a hook around sleep to manage
the commit/rollback for the page. This works well for pages
without errors. The commit is called for the conenction that was
used on the page. The problem occurrs if an error is introduced.
The awake respond sleep cycle is broken and my rollback never gets
called.
Where would be the right place to hook into the transaction to
support automatic commit/rollback?
--Karl
Here is the DatabasePage prototype. Keep in mind that this is just
an experiment.
#!/usr/bin/env python
from ConnectionPool import ConnectionPool
from WebKit.Page import Page
class DatabasePage(Page):
"""Manage database connections in the pool."""
# XXX - What if we want to have more than one connection?
# eg. one to PostgreSQL and one to Oracle?
#
# XXX - Is this the right place to be creating and managing
# database connections?
#
# XXX - Do we want to hold a database connection for the
# duration of the page? How will this affect the
# total numer of connections allowed if we increase
# the MAX_THREADS?
def getConnection(self):
connectionPool = ConnectionPool()
conn = connectionPool.get()
self._connections.append(conn)
return conn
def putConnection(self, conn):
connectionPool = ConnectionPool()
connectionPool.put(conn)
def awake(self, transaction):
print 'awake called in DatabasePage'
Page.awake(self, transaction)
self._connections = []
assert self._connections is not None
def sleep(self, transaction):
print 'sleep called in DatabasePage'
if transaction.errorOccurred():
for conn in self._connections:
print 'rollback'
conn.rollback()
self.putConnection(conn)
else:
for conn in self._connections:
print 'commit'
conn.commit()
self.putConnection(conn)
self._connections = None
Page.sleep(self, transaction)
__________________________________________________
Do You Yahoo!?
Yahoo! Tax Center - online filing with TurboTax
http://http://taxes.yahoo.com/
_______________________________________________
Webware-discuss mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/webware-discuss