diff --git a/flamenco_worker/upstream_update_queue.py b/flamenco_worker/upstream_update_queue.py
index c266da3fb265307d3ce13f4cd1fe5a98f6924013..26b35ef58a5bad012683c10dd63c02a504c13258 100644
--- a/flamenco_worker/upstream_update_queue.py
+++ b/flamenco_worker/upstream_update_queue.py
@@ -46,6 +46,8 @@ class TaskUpdateQueue:
         self._db.isolation_level = ''
 
     def _disconnect_db(self):
+        if self._db is None:
+            return
         self._log.info('Disconnecting from database %s', self.db_fname)
         self._db.close()
         self._db = None
@@ -91,6 +93,8 @@ class TaskUpdateQueue:
 
             self._log.debug('Inspecting queued task updates.')
             await self.flush_and_catch(loop=loop)
+
+        self._disconnect_db()
         self._log.warning('Stopping work loop')
 
     def _queue(self) -> typing.Iterable[typing.Tuple[int, str, object]]:
diff --git a/tests/test_upstream_update_queue.py b/tests/test_upstream_update_queue.py
index 6a7c894ebe65cd82c6c688081bb16729ed4b7d7c..8bea08a5d761cbe991971486aa0cb0428ee0125b 100644
--- a/tests/test_upstream_update_queue.py
+++ b/tests/test_upstream_update_queue.py
@@ -1,6 +1,7 @@
 import asyncio
 import copy
 import datetime
+import logging
 import tempfile
 from unittest.mock import Mock
 
@@ -16,6 +17,8 @@ class TaskUpdateQueueTest(AbstractWorkerTest):
         from flamenco_worker.cli import construct_asyncio_loop
         from tests.mock_responses import CoroMock
 
+        logging.getLogger('flamenco_worker.upstream_update_queue').setLevel(logging.DEBUG)
+
         self.asyncio_loop = construct_asyncio_loop()
         self.shutdown_future = self.asyncio_loop.create_future()
 
@@ -31,6 +34,8 @@ class TaskUpdateQueueTest(AbstractWorkerTest):
         )
 
     def tearDown(self):
+        self.tuqueue._disconnect_db()
+        super().tearDown()
         self.tmpdir.cleanup()
 
     def test_queue_push(self):