KARAF-7174: Implement a SSH channel resource cleaner whiteboard
This is a great idea and useful feature. Esp for other commands that use connection pools, or other stateful resources.
One suggestion -- perhaps a rename for consistency?
CommandCloseListener?
Yes, Good point about the name. My only comment is that (potentially) it could be used for other services than commands. But let's start with shell commands :)
Yes, Good point about the name. My only comment is that (potentially) it could be used for other services than commands. But let's start with shell commands :)
How do you see it working for other services? I think things like scr services should use deactivate(). I'm struggling to find a use case where another service would go 'out-of-scope' so to speak similar to how the shell command can timeout.
@mattrpav I see a use case: a command use a service which starts a thread. The service has to be hook with ssh session to stop the thread when the session disconnects. So the service is not a shell command but it has to clean resources sync with ssh session. SCR deactivate is a hook on SCR component lifecycle not the ssh session.
@mattrpav I see a use case: a command use a service which starts a thread. The service has to be hook with ssh session to stop the thread when the session disconnects. So the service is not a shell command but it has to clean resources sync with ssh session. SCR deactivate is a hook on SCR component lifecycle not the ssh session.
What about simply having Commands implement the JDK's built-in Closable interface and follow a convention vs marking the command with a domain-specific interface?
Seems like (commandInstance instanceof Closeable) would do the trick and we wouldn't need to create a new interface. Thoughts?
@mattrpav that's a good idea to leverage Closeable. Let me do an experiment.