diff --git a/python/src/deltachat/account.py b/python/src/deltachat/account.py index 0c1dbd797..3c5c61f94 100644 --- a/python/src/deltachat/account.py +++ b/python/src/deltachat/account.py @@ -615,8 +615,14 @@ class Account(object): # the following wait is left out for now because it can fail if # a) python code holds an extra self._dc_context reference # b) the core does not manage to send a NULL through get_next_event() - # self.log("wait for event thread to finish") - # self._event_thread.wait() + self.log("wait for event thread to finish") + try: + self._event_thread.wait(timeout=2) + except RuntimeError as e: + self.log("Could not wait for thread: {}".format(e)) + + if self._event_thread.is_alive(): + self.log("WARN: event thread did not terminate") self._shutdown_event.set() diff --git a/python/src/deltachat/events.py b/python/src/deltachat/events.py index 0c9ae7fe4..ccc80a4ef 100644 --- a/python/src/deltachat/events.py +++ b/python/src/deltachat/events.py @@ -151,12 +151,12 @@ class EventThread(threading.Thread): def mark_shutdown(self): self._marked_for_shutdown = True - def wait(self): + def wait(self, timeout=None): if self == threading.current_thread(): # we are in the callback thread and thus cannot # wait for the thread-loop to finish. return - self.join() + self.join(timeout=timeout) def run(self): """ get and run events until shutdown. """ diff --git a/python/src/deltachat/testplugin.py b/python/src/deltachat/testplugin.py index 2a223c289..0ad38bdf5 100644 --- a/python/src/deltachat/testplugin.py +++ b/python/src/deltachat/testplugin.py @@ -234,7 +234,9 @@ def acfactory(pytestconfig, tmpdir, request, session_liveconfig, data): ac.addr = ac.get_self_contact().addr ac.set_config("displayname", logid) if not quiet: - ac.add_account_plugin(FFIEventLogger(ac)) + logger = FFIEventLogger(ac) + logger.init_time = self.init_time + ac.add_account_plugin(logger) self._accounts.append(ac) return ac @@ -245,7 +247,6 @@ def acfactory(pytestconfig, tmpdir, request, session_liveconfig, data): self.offline_count += 1 tmpdb = tmpdir.join("offlinedb%d" % self.offline_count) ac = self.make_account(tmpdb.strpath, logid="ac{}".format(self.offline_count)) - ac._evtracker.init_time = self.init_time ac._evtracker.set_timeout(2) return ac diff --git a/python/tests/test_account.py b/python/tests/test_account.py index 4cd70c8e0..a402cfc72 100644 --- a/python/tests/test_account.py +++ b/python/tests/test_account.py @@ -1575,6 +1575,8 @@ class TestOnlineAccount: def test_ephemeral_timer(self, acfactory, lp): ac1, ac2 = acfactory.get_two_online_accounts() + ac1.set_config("e2ee_enabled", "0") + ac2.set_config("e2ee_enabled", "0") lp.sec("ac1: create chat with ac2") chat1 = ac1.create_chat(ac2) diff --git a/src/job.rs b/src/job.rs index 498a2b00f..62b0dcd9f 100644 --- a/src/job.rs +++ b/src/job.rs @@ -978,7 +978,7 @@ async fn perform_job_action( info!( context, - "Inbox finished immediate try {} of job {}", tries, job + "Finished immediate try {} of job {}", tries, job ); try_res