Reset database connection before reconnecting when updating export state
Some remote exports still fail to update their final state.
For example [this job](https://arkindex.teklia.com/rq/queues/1/d097b1d8-6da7-46f8-971d-2a272dd7ec81/ failed with:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/django/db/backends/utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
psycopg2.OperationalError: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/share/arkindex/documents/export/__init__.py", line 129, in update_state
File "/usr/local/lib/python3.10/site-packages/django/db/models/base.py", line 812, in save
self.save_base(
File "/usr/local/lib/python3.10/site-packages/django/db/models/base.py", line 863, in save_base
updated = self._save_table(
File "/usr/local/lib/python3.10/site-packages/django/db/models/base.py", line 976, in _save_table
updated = self._do_update(
File "/usr/local/lib/python3.10/site-packages/django/db/models/base.py", line 1040, in _do_update
return filtered._update(values) > 0
File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 1216, in _update
return query.get_compiler(self.db).execute_sql(CURSOR)
File "/usr/local/lib/python3.10/site-packages/django/db/models/sql/compiler.py", line 1822, in execute_sql
cursor = super().execute_sql(result_type)
File "/usr/local/lib/python3.10/site-packages/django/db/models/sql/compiler.py", line 1398, in execute_sql
cursor.execute(sql, params)
File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/django/__init__.py", line 616, in execute
return real_execute(self, sql, params)
File "/usr/local/lib/python3.10/site-packages/django/db/backends/utils.py", line 67, in execute
return self._execute_with_wrappers(
File "/usr/local/lib/python3.10/site-packages/django/db/backends/utils.py", line 80, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/usr/local/lib/python3.10/site-packages/django/db/backends/utils.py", line 84, in _execute
with self.db.wrap_database_errors:
File "/usr/local/lib/python3.10/site-packages/django/db/utils.py", line 91, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/usr/local/lib/python3.10/site-packages/django/db/backends/utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
django.db.utils.OperationalError: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
We can see that the initial exception comes from psycopg2
whereas I'm catching django.db.utils.OperationalError
Unfortunately this is not the same:
>>> import psycopg2
>>> import django.db.utils
>>> psycopg2.OperationalError == django.db.utils.OperationalError
False