From f82c6bfd7f67f80e75d79391a5db53dc90a7bc70 Mon Sep 17 00:00:00 2001 From: terminaldweller Date: Fri, 17 Mar 2023 23:54:44 +0330 Subject: fixed the bug where we were not removing cancelled tests --- pyproject.toml | 2 +- tunneltop/tunneltop.py | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 44270e7..56fed43 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "tunneltop" -version = "0.4.0" +version = "0.4.1" description = "A top-like tunnel manager" authors = ["terminaldweller "] license = "GPL-3.0" diff --git a/tunneltop/tunneltop.py b/tunneltop/tunneltop.py index f9e734b..01f1bf3 100755 --- a/tunneltop/tunneltop.py +++ b/tunneltop/tunneltop.py @@ -4,6 +4,7 @@ import argparse import asyncio import copy import curses +import datetime import enum import os import signal @@ -445,7 +446,7 @@ class TunnelManager: "a", encoding="utf-8", ) as logfile: - logfile.write(log) + logfile.write(repr(datetime.datetime.now()) + ": " + log) async def restart_task(self, line_content: str) -> None: """restart a task""" @@ -474,6 +475,7 @@ class TunnelManager: self.data_cols[name]["disabled"] = "manual" if name in self.tunnel_test_tasks: self.tunnel_test_tasks[name].cancel() + del self.tunnel_test_tasks[name] await asyncio.sleep(0) break @@ -536,7 +538,7 @@ class TunnelManager: return await self.revive_failed_tasks() for key, value in self.scheduler_table.items(): - if value == 0 and key not in self.tunnel_test_tasks: + if value == 0: self.write_log("rescheduling test for " + key + "\n") tunnel_entry = self.data_cols[key] test_task = asyncio.create_task( @@ -546,8 +548,8 @@ class TunnelManager: ), name=key, ) - await asyncio.sleep(0) self.tunnel_test_tasks[key] = test_task + await asyncio.sleep(0) if value > 0: self.scheduler_table[key] = self.scheduler_table[key] - 1 if value <= 0: @@ -565,6 +567,9 @@ class TunnelManager: self.write_log("\n") except asyncio.CancelledError: pass + except Exception as other_e: + if hasattr(other_e, "message"): + self.write_log(other_e.message) async def tui_loop(self) -> None: """the tui loop""" -- cgit v1.2.3