From e46a344fa68b8b33bed1d9962221365893c5d881 Mon Sep 17 00:00:00 2001 From: Sergey Shevelev Date: Thu, 21 Nov 2019 17:25:39 -0800 Subject: [PATCH] Making default value for min_open_files_limit dependent on user's ulimit values so trying to increase them above hard limit while running as non-privileged user is not causing error on start-up. See https://github.com/jupyter/notebook/issues/5070 --- notebook/notebookapp.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/notebook/notebookapp.py b/notebook/notebookapp.py index 9170428ba..fac00ef7f 100755 --- a/notebook/notebookapp.py +++ b/notebook/notebookapp.py @@ -817,7 +817,7 @@ class NotebookApp(JupyterApp): """ ) - min_open_files_limit = Integer(4096, config=True, + min_open_files_limit = Integer(config=True, help=""" Gets or sets a lower bound on the open file handles process resource limit. This may need to be increased if you run into an @@ -825,6 +825,22 @@ class NotebookApp(JupyterApp): This is not applicable when running on Windows. """) + @default('min_open_files_limit') + def _default_min_open_files_limit(self): + if resource is None: + # Ignoring min_open_files_limit because the limit cannot be adjusted (for example, on Windows) + return None + + soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE) + + DEFAULT_SOFT = 4096 + if hard >= DEFAULT_SOFT: + return DEFAULT_SOFT + + self.log.debug("Default value for min_open_files_limit is ignored (hard=%r, soft=%r)", hard, soft) + + return soft + @observe('token') def _token_changed(self, change): self._token_generated = False