diff --git a/server/src/uds/osmanagers/LinuxOsManager/linux_osmanager.py b/server/src/uds/osmanagers/LinuxOsManager/linux_osmanager.py index 3fcf91740..c4cd62103 100644 --- a/server/src/uds/osmanagers/LinuxOsManager/linux_osmanager.py +++ b/server/src/uds/osmanagers/LinuxOsManager/linux_osmanager.py @@ -36,6 +36,7 @@ from django.utils.translation import gettext_noop as _ from uds.core import osmanagers, types +from uds.core.managers.userservice import UserServiceManager from uds.core.ui import gui from uds.core.util import fields, log from uds.core.types.states import State @@ -115,10 +116,12 @@ def handle_unused(self, userservice: 'UserService') -> None: log.log( userservice, types.log.LogLevel.INFO, - 'Unused user service for too long. Removing due to OS Manager parameters.', + 'Unused user service for too long. Releasing (logout) due to OS Manager parameters.', types.log.LogSource.OSMANAGER, ) - userservice.release() + osmanagers.OSManager.logged_out(userservice, username='unused') + # release_from_logout handles cache return if pool allows it, else releases + UserServiceManager.manager().release_from_logout(userservice) def is_persistent(self) -> bool: return fields.onlogout_field_is_persistent(self.on_logout) diff --git a/server/src/uds/osmanagers/WindowsOsManager/windows.py b/server/src/uds/osmanagers/WindowsOsManager/windows.py index e44993e59..7c0f40634 100644 --- a/server/src/uds/osmanagers/WindowsOsManager/windows.py +++ b/server/src/uds/osmanagers/WindowsOsManager/windows.py @@ -14,6 +14,7 @@ from django.utils.translation import gettext_noop as _ from uds.core import osmanagers, types +from uds.core.managers.userservice import UserServiceManager from uds.core.ui import gui from uds.core.util import log, fields from uds.core.types.states import State @@ -107,10 +108,12 @@ def handle_unused(self, userservice: 'UserService') -> None: log.log( userservice, types.log.LogLevel.INFO, - 'Unused user service for too long. Removing due to OS Manager parameters.', + 'Unused user service for too long. Releasing (logout) due to OS Manager parameters.', types.log.LogSource.OSMANAGER, ) - userservice.release() + osmanagers.OSManager.logged_out(userservice, username='unused') + # release_from_logout handles cache return if pool allows it, else releases + UserServiceManager.manager().release_from_logout(userservice) def is_persistent(self) -> bool: return fields.onlogout_field_is_persistent(self.on_logout) diff --git a/server/src/uds/workers/assigned_unused.py b/server/src/uds/workers/assigned_unused.py index 2e2477875..482ee294e 100644 --- a/server/src/uds/workers/assigned_unused.py +++ b/server/src/uds/workers/assigned_unused.py @@ -34,8 +34,9 @@ from django.db.models import Q, Count -from uds.core import types +from uds.core import types, osmanagers from uds.core.jobs import Job +from uds.core.managers.userservice import UserServiceManager from uds.core.util import log from uds.core.util.config import GlobalConfig from uds.core.types.states import State @@ -96,6 +97,8 @@ def run(self) -> None: us, types.log.LogLevel.INFO, source=types.log.LogSource.SERVER, - message='Removing unused assigned service', + message='Releasing (logout) unused assigned service', ) - us.release() + osmanagers.OSManager.logged_out(us, username='unused') + # release_from_logout handles cache return if pool allows it, else releases + UserServiceManager.manager().release_from_logout(us)