# HG changeset patch # User Aurelien Campeas # Date 1402502299 -7200 # Node ID 38c7598b5c61f72fc8c0f8ca9e69b65e115600fa # Parent 21461f80f348fb811d6709f098edf94f83681a8e [connection] remove the `mode` attribute It is now unused. While removing mode, we also drop some sqlserver-specific reconnection logic snippets. These had several downsides: * untested * partial coverage * done at the wrong level Related to #2919309. diff -r 21461f80f348 -r 38c7598b5c61 misc/scripts/ldapuser2ldapfeed.py --- a/misc/scripts/ldapuser2ldapfeed.py Wed Jun 11 17:14:32 2014 +0200 +++ b/misc/scripts/ldapuser2ldapfeed.py Wed Jun 11 17:58:19 2014 +0200 @@ -31,8 +31,6 @@ from cubicweb.server.edition import EditedEntity -session.mode = 'write' # hold on the connections set - print '******************** backport entity content ***************************' todelete = defaultdict(list) diff -r 21461f80f348 -r 38c7598b5c61 misc/scripts/pyroforge2datafeed.py --- a/misc/scripts/pyroforge2datafeed.py Wed Jun 11 17:14:32 2014 +0200 +++ b/misc/scripts/pyroforge2datafeed.py Wed Jun 11 17:58:19 2014 +0200 @@ -39,8 +39,6 @@ )) -session.mode = 'write' # hold on the connections set - print '******************** backport entity content ***************************' from cubicweb.server import debugged diff -r 21461f80f348 -r 38c7598b5c61 server/querier.py --- a/server/querier.py Wed Jun 11 17:14:32 2014 +0200 +++ b/server/querier.py Wed Jun 11 17:58:19 2014 +0200 @@ -580,9 +580,6 @@ if rqlst.TYPE != 'select': if cnx.read_security: check_no_password_selected(rqlst) - # write query, ensure connection's mode is 'write' so connections - # won't be released until commit/rollback - cnx.mode = 'write' cachekey = None else: if cnx.read_security: diff -r 21461f80f348 -r 38c7598b5c61 server/session.py --- a/server/session.py Wed Jun 11 17:14:32 2014 +0200 +++ b/server/session.py Wed Jun 11 17:58:19 2014 +0200 @@ -245,7 +245,6 @@ read/write security is currently activated. """ - mode = 'write' is_request = False hooks_in_progress = False is_repo_in_memory = True # bw compat diff -r 21461f80f348 -r 38c7598b5c61 server/sources/native.py --- a/server/sources/native.py Wed Jun 11 17:14:32 2014 +0200 +++ b/server/sources/native.py Wed Jun 11 17:58:19 2014 +0200 @@ -553,25 +553,7 @@ self._cache[cachekey] = sql, qargs, cbs args = self.merge_args(args, qargs) assert isinstance(sql, basestring), repr(sql) - try: - cursor = self.doexec(cnx, sql, args) - except (self.OperationalError, self.InterfaceError): - if cnx.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") - cnx.cnxset.reconnect() - cursor = self.doexec(cnx, sql, args) - except self.DbapiError as exc: - # We get this one with pyodbc and SQL Server when connection was reset - if exc.args[0] == '08S01' and cnx.mode != 'write': - self.warning("trying to reconnect") - cnx.cnxset.reconnect() - cursor = self.doexec(cnx, sql, args) - else: - raise + cursor = self.doexec(cnx, sql, args) results = self.process_result(cursor, cnx, cbs) assert dbg_results(results) return results @@ -829,18 +811,12 @@ # system source interface ################################################# - def _eid_type_source(self, cnx, eid, sql, _retry=True): + def _eid_type_source(self, cnx, eid, sql): try: res = self.doexec(cnx, sql).fetchone() if res is not None: return res - except (self.OperationalError, self.InterfaceError): - if cnx.mode == 'read' and _retry: - self.warning("trying to reconnect (eid_type_source())") - cnx.cnxset.reconnect() - return self._eid_type_source(cnx, eid, sql, _retry=False) except Exception: - assert cnx.cnxset, 'connection has no connections set' self.exception('failed to query entities table for eid %s', eid) raise UnknownEid(eid) @@ -1056,8 +1032,6 @@ important note: while undoing of a transaction, only hooks in the 'integrity', 'activeintegrity' and 'undo' categories are called. """ - # set mode so connections set isn't released subsquently until commit/rollback - cnx.mode = 'write' errors = [] cnx.transaction_data['undoing_uuid'] = txuuid with cnx.deny_all_hooks_but('integrity', 'activeintegrity', 'undo'): diff -r 21461f80f348 -r 38c7598b5c61 server/test/unittest_repository.py --- a/server/test/unittest_repository.py Wed Jun 11 17:14:32 2014 +0200 +++ b/server/test/unittest_repository.py Wed Jun 11 17:58:19 2014 +0200 @@ -445,7 +445,6 @@ def test_add_delete_info(self): with self.admin_access.repo_cnx() as cnx: - cnx.mode = 'write' entity = self.repo.vreg['etypes'].etype_class('Personne')(cnx) entity.eid = -1 entity.complete = lambda x: None