From 1d3314c4f3f7ad57d3112a2bf1c4df04ef84ea7b Mon Sep 17 00:00:00 2001 From: DJ2LS <75909252+DJ2LS@users.noreply.github.com> Date: Sat, 28 Sep 2024 18:20:47 +0200 Subject: [PATCH 1/3] adjust session delete process --- freedata_server/schedule_manager.py | 15 ++++++++++----- freedata_server/server.py | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/freedata_server/schedule_manager.py b/freedata_server/schedule_manager.py index 32451e63c..f8ef7ada1 100644 --- a/freedata_server/schedule_manager.py +++ b/freedata_server/schedule_manager.py @@ -116,20 +116,26 @@ def update_transmission_state(self): session = self.state_manager.arq_irs_sessions[session_id] # set an IRS session to RESUME for being ready getting the data again - if session.is_IRS and session.last_state_change_timestamp + 90 < time.time(): - self.log.warning(f"[SCHEDULE] [ARQ={session_id}] Setting state to", old_state=session.state, state=IRS_State.RESUME) + if session.is_IRS and session.last_state_change_timestamp + 90 < time.time(): try: # if session state is already RESUME, don't set it again for avoiding a flooded cli if session.state not in [session.state_enum.RESUME]: + self.log.info(f"[SCHEDULE] [ARQ={session_id}] Setting state to", old_state=session.state, + state=IRS_State.RESUME) session.state = session.set_state(session.state_enum.RESUME) session.state = session.state_enum.RESUME + # if session is received successfully, indiciated by ENDED state, delete it + if session.state in [session.state_enum.ENDED]: + session_to_be_deleted.add(session) + except Exception as e: self.log.warning("[SCHEDULE] error setting ARQ state", error=e) for session_id in self.state_manager.arq_iss_sessions: session = self.state_manager.arq_iss_sessions[session_id] - if not session.is_IRS and session.last_state_change_timestamp + 90 < time.time() and session.state in [ISS_State.ABORTED, ISS_State.FAILED]: + if not session.is_IRS and session.last_state_change_timestamp + 90 < time.time() and session.state in [ + ISS_State.ABORTED, ISS_State.FAILED]: session_to_be_deleted.add(session) # finally delete sessions @@ -141,5 +147,4 @@ def update_transmission_state(self): self.state_manager.remove_arq_iss_session(session.id) except Exception as e: - self.log.warning("[SCHEDULE] error deleting ARQ session", error=e) - + self.log.warning("[SCHEDULE] error deleting ARQ session", error=e) \ No newline at end of file diff --git a/freedata_server/server.py b/freedata_server/server.py index 3bc63a33e..d27c459b3 100644 --- a/freedata_server/server.py +++ b/freedata_server/server.py @@ -45,7 +45,7 @@ # Constants CONFIG_ENV_VAR = 'FREEDATA_CONFIG' DEFAULT_CONFIG_FILE = 'config.ini' -MODEM_VERSION = "0.16.4-alpha" +MODEM_VERSION = "0.16.6-alpha" API_VERSION = 3 LICENSE = 'GPL3.0' From 59c44dc3afd20084807900358f1d6c7e3a039f00 Mon Sep 17 00:00:00 2001 From: DJ2LS <75909252+DJ2LS@users.noreply.github.com> Date: Sat, 28 Sep 2024 19:41:52 +0200 Subject: [PATCH 2/3] attempt fixing state change timestamp --- freedata_server/arq_session.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freedata_server/arq_session.py b/freedata_server/arq_session.py index 65800e0be..972082588 100644 --- a/freedata_server/arq_session.py +++ b/freedata_server/arq_session.py @@ -109,10 +109,10 @@ def transmit_frame(self, frame: bytearray, mode='auto'): self.modem.transmit(mode, 1, 1, frame) def set_state(self, state): + self.last_state_change_timestamp = time.time() if self.state == state: self.log(f"{type(self).__name__} state {self.state.name} unchanged.") else: - self.last_state_change_timestamp = time.time() self.log(f"{type(self).__name__} state change from {self.state.name} to {state.name} at {self.last_state_change_timestamp}") self.state = state From c310ce1e8531f05511d49c9b9436339aa04f220d Mon Sep 17 00:00:00 2001 From: DJ2LS <75909252+DJ2LS@users.noreply.github.com> Date: Sat, 28 Sep 2024 22:02:47 +0200 Subject: [PATCH 3/3] version bump --- freedata_gui/package.json | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freedata_gui/package.json b/freedata_gui/package.json index 88b9626ec..911231b75 100644 --- a/freedata_gui/package.json +++ b/freedata_gui/package.json @@ -1,6 +1,6 @@ { "name": "FreeDATA", - "version": "0.16.4-alpha", + "version": "0.16.6-alpha", "description": "FreeDATA Client application for connecting to FreeDATA server", "private": true, "scripts": { diff --git a/setup.py b/setup.py index 182a5a236..6ee8587be 100644 --- a/setup.py +++ b/setup.py @@ -9,7 +9,7 @@ setup( name='freedata', - version='0.16.3a', + version='0.16.6a1', packages=find_packages(where='.'), package_dir={'': '.'}, install_requires=required,