server/sources/native.py
changeset 5982 30985571dbc9
parent 5891 99024ad59223
parent 5975 5120d97e2f7e
child 6019 373a313ee9ec
--- a/server/sources/native.py	Fri Jul 16 11:41:17 2010 +0200
+++ b/server/sources/native.py	Fri Jul 16 12:40:22 2010 +0200
@@ -468,13 +468,17 @@
         try:
             cursor = self.doexec(session, sql, args)
         except (self.OperationalError, self.InterfaceError):
+            if session.mode == 'write':
+                # do not attempt to reconnect if there has been some write
+                # during the transaction
+                raise
             # FIXME: better detection of deconnection pb
             self.warning("trying to reconnect")
             session.pool.reconnect(self)
             cursor = self.doexec(session, sql, args)
         except (self.DbapiError,), exc:
             # We get this one with pyodbc and SQL Server when connection was reset
-            if exc.args[0] == '08S01':
+            if exc.args[0] == '08S01' and session.mode != 'write':
                 self.warning("trying to reconnect")
                 session.pool.reconnect(self)
                 cursor = self.doexec(session, sql, args)