[Sqlalchemy-commits] [1164] sqlalchemy/trunk/lib/sqlalchemy/engine.py: put a try/finally to insure t
Brought to you by:
zzzeek
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><style type="text/css"><!-- #msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; } #msg dt { float: left; width: 6em; font-weight: bold; } #msg dt:after { content:':';} #msg dl, #msg dt, #msg ul, #msg li { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; } #msg dl a { font-weight: bold} #msg dl a:link { color:#fc3; } #msg dl a:active { color:#ff0; } #msg dl a:visited { color:#cc6; } h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; } #msg pre { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; } #msg ul, pre { overflow: auto; } #patch { width: 100%; } #patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;} #patch .propset h4, #patch .binary h4 {margin:0;} #patch pre {padding:0;line-height:1.2em;margin:0;} #patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;} #patch .propset .diff, #patch .binary .diff {padding:10px 0;} #patch span {display:block;padding:0 10px;} #patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;} #patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;} #patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;} #patch .lines, .info {color:#888;background:#fff;} --></style> <title>[1164] sqlalchemy/trunk/lib/sqlalchemy/engine.py: put a try/finally to insure that SQLSession is cleaned out on rollback/commit regardless of issues</title> </head> <body> <div id="msg"> <dl> <dt>Revision</dt> <dd>1164</dd> <dt>Author</dt> <dd>zzzeek</dd> <dt>Date</dt> <dd>2006-03-17 16:00:24 -0600 (Fri, 17 Mar 2006)</dd> </dl> <h3>Log Message</h3> <pre>put a try/finally to insure that SQLSession is cleaned out on rollback/commit regardless of issues</pre> <h3>Modified Paths</h3> <ul> <li><a href="#sqlalchemytrunklibsqlalchemyenginepy">sqlalchemy/trunk/lib/sqlalchemy/engine.py</a></li> </ul> </div> <div id="patch"> <h3>Diff</h3> <a id="sqlalchemytrunklibsqlalchemyenginepy"></a> <div class="modfile"><h4>Modified: sqlalchemy/trunk/lib/sqlalchemy/engine.py (1163 => 1164)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/trunk/lib/sqlalchemy/engine.py 2006-03-17 21:58:00 UTC (rev 1163) +++ sqlalchemy/trunk/lib/sqlalchemy/engine.py 2006-03-17 22:00:24 UTC (rev 1164) </span><span class="lines">@@ -199,15 +199,19 @@ </span><span class="cx"> def rollback(self): </span><span class="cx"> """rolls back the transaction on this SQLSession's connection. this can be called regardless of the "begin" counter value, i.e. can be called from anywhere inside a callstack. the "begin" counter is cleared.""" </span><span class="cx"> if self.__tcount > 0: </span><del>- self.engine.do_rollback(self.connection) - del self.__transaction - self.__tcount = 0 </del><ins>+ try: + self.engine.do_rollback(self.connection) + finally: + del self.__transaction + self.__tcount = 0 </ins><span class="cx"> def commit(self): </span><span class="cx"> """commits the transaction started by begin(). If begin() was called multiple times, a counter will be decreased for each call to commit(), with the actual commit operation occuring when the counter reaches zero. this is to provide "nested" behavior of transactions so that different functions in a particular call stack can call begin()/commit() independently of each other without knowledge of an existing transaction.""" </span><span class="cx"> if self.__tcount == 1: </span><del>- self.engine.do_commit(self.connection) - del self.__transaction - self.__tcount = 0 </del><ins>+ try: + self.engine.do_commit(self.connection) + finally: + del self.__transaction + self.__tcount = 0 </ins><span class="cx"> elif self.__tcount > 1: </span><span class="cx"> self.__tcount -= 1 </span><span class="cx"> def is_begun(self): </span></span></pre> </div> </div> </body> </html> |