From 9c8d6e01fb38119b27f7195decf34a3d6b950164 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= <sybren@stuvel.eu>
Date: Wed, 6 Sep 2017 17:14:49 +0200
Subject: [PATCH] Properly fixed futures not being waited for.

---
 flamenco_worker/worker.py |  4 ++--
 tests/test_worker.py      | 12 ++++++++++++
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/flamenco_worker/worker.py b/flamenco_worker/worker.py
index 1462b165..f8c46ac1 100644
--- a/flamenco_worker/worker.py
+++ b/flamenco_worker/worker.py
@@ -444,7 +444,7 @@ class FlamencoWorker:
         elif self._push_act_to_manager is None or self._push_act_to_manager.done():
             # Schedule a future push to manager.
             self._push_act_to_manager = asyncio.ensure_future(
-                await self.push_to_manager(delay=self.push_act_max_interval))
+                self.push_to_manager(delay=self.push_act_max_interval))
 
     async def register_log(self, log_entry, *fmt_args):
         """Registers a log entry, and possibly sends all queued log entries to upstream Manager.
@@ -474,7 +474,7 @@ class FlamencoWorker:
         elif self._push_log_to_manager is None or self._push_log_to_manager.done():
             # Schedule a future push to manager.
             self._push_log_to_manager = asyncio.ensure_future(
-                await self.push_to_manager(delay=self.push_log_max_interval))
+                self.push_to_manager(delay=self.push_log_max_interval))
 
     def output_produced(self, *paths: typing.Union[str, pathlib.PurePath]):
         """Registers a produced output (e.g. rendered frame) with the manager.
diff --git a/tests/test_worker.py b/tests/test_worker.py
index 330d38dd..e620ccee 100644
--- a/tests/test_worker.py
+++ b/tests/test_worker.py
@@ -43,6 +43,18 @@ class AbstractFWorkerTest(AbstractWorkerTest):
         )
 
     def tearDown(self):
+        if self.worker._push_act_to_manager is not None:
+            try:
+                self.asyncio_loop.run_until_complete(self.worker._push_act_to_manager)
+            except asyncio.CancelledError:
+                pass
+
+        if self.worker._push_log_to_manager is not None:
+            try:
+                self.asyncio_loop.run_until_complete(self.worker._push_log_to_manager)
+            except asyncio.CancelledError:
+                pass
+
         self.shutdown_future.cancel()
         self.worker.shutdown()
         self.asyncio_loop.close()
-- 
GitLab