Skip to content

Commit da9081f

Browse files
committed
Apply review comments, revert interval validation
1 parent 525906f commit da9081f

File tree

3 files changed

+15
-20
lines changed

3 files changed

+15
-20
lines changed

jupyter_server/serverapp.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1547,7 +1547,7 @@ def init_terminals(self):
15471547

15481548
try:
15491549
from .terminal import initialize
1550-
initialize(self.web_app, self.root_dir, self.connection_url, self.terminado_settings, self)
1550+
initialize(parent=self)
15511551
self.web_app.settings['terminals_available'] = True
15521552
except ImportError as e:
15531553
self.log.warning(_i18n("Terminals not available (error was %s)"), e)

jupyter_server/terminal/__init__.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
1515
from .terminalmanager import TerminalManager
1616

1717

18-
def initialize(webapp, root_dir, connection_url, settings, parent):
18+
def initialize(parent):
1919
if os.name == 'nt':
2020
default_shell = 'powershell.exe'
2121
else:
2222
default_shell = which('sh')
23-
shell_override = settings.get('shell_command')
23+
shell_override = parent.terminado_settings.get('shell_command')
2424
shell = (
2525
[os.environ.get('SHELL') or default_shell]
2626
if shell_override is None
@@ -33,19 +33,19 @@ def initialize(webapp, root_dir, connection_url, settings, parent):
3333
# the user has specifically set a preferred shell command.
3434
if os.name != 'nt' and shell_override is None and not sys.stdout.isatty():
3535
shell.append('-l')
36-
terminal_manager = webapp.settings['terminal_manager'] = TerminalManager(
36+
terminal_manager = parent.web_app.settings['terminal_manager'] = TerminalManager(
3737
shell_command=shell,
38-
extra_env={'JUPYTER_SERVER_ROOT': root_dir,
39-
'JUPYTER_SERVER_URL': connection_url,
38+
extra_env={'JUPYTER_SERVER_ROOT': parent.root_dir,
39+
'JUPYTER_SERVER_URL': parent.connection_url,
4040
},
4141
parent=parent,
4242
)
43-
terminal_manager.log = app_log
44-
base_url = webapp.settings['base_url']
43+
terminal_manager.log = parent.log
44+
base_url = parent.web_app.settings['base_url']
4545
handlers = [
4646
(ujoin(base_url, r"/terminals/websocket/(\w+)"), TermSocket,
4747
{'term_manager': terminal_manager}),
4848
(ujoin(base_url, r"/api/terminals"), api_handlers.TerminalRootHandler),
4949
(ujoin(base_url, r"/api/terminals/(\w+)"), api_handlers.TerminalHandler),
5050
]
51-
webapp.add_handlers(".*$", handlers)
51+
parent.web_app.add_handlers(".*$", handlers)

jupyter_server/terminal/terminalmanager.py

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@
1414
from tornado import web
1515
from tornado.ioloop import IOLoop, PeriodicCallback
1616
from traitlets import Integer, validate
17-
from traitlets.config import Configurable
17+
from traitlets.config import LoggingConfigurable
1818
from ..prometheus.metrics import TERMINAL_CURRENTLY_RUNNING_TOTAL
1919

2020

21-
class TerminalManager(Configurable, NamedTermManager):
21+
class TerminalManager(LoggingConfigurable, NamedTermManager):
2222
""" """
2323

2424
_culler_callback = None
@@ -35,15 +35,6 @@ class TerminalManager(Configurable, NamedTermManager):
3535
help="""The interval (in seconds) on which to check for terminals exceeding the inactive timeout value."""
3636
)
3737

38-
@validate('cull_interval')
39-
def _cull_interval_validate(self, proposal):
40-
value = proposal['value']
41-
if value <= 0:
42-
warnings.warn("Invalid value for 'cull_interval' detected ({}) - using default value ({}).".
43-
format(value, self.cull_interval_default))
44-
value = self.cull_interval_default
45-
return value
46-
4738
# -------------------------------------------------------------------------
4839
# Methods for managing terminals
4940
# -------------------------------------------------------------------------
@@ -118,6 +109,10 @@ def _initialize_culler(self):
118109
if not self._initialized_culler and self.cull_inactive_timeout > 0:
119110
if self._culler_callback is None:
120111
loop = IOLoop.current()
112+
if self.cull_interval <= 0: # handle case where user set invalid value
113+
self.log.warning("Invalid value for 'cull_interval' detected (%s) - using default value (%s).",
114+
self.cull_interval, self.cull_interval_default)
115+
self.cull_interval = self.cull_interval_default
121116
self._culler_callback = PeriodicCallback(
122117
self._cull_terminals, 1000 * self.cull_interval)
123118
self.log.info("Culling terminals with inactivity > %s seconds at %s second intervals ...",

0 commit comments

Comments
 (0)