Skip to content

Commit 2677b50

Browse files
committed
Always send the code from the client
Queue the execution request per kernel
1 parent d30b8bc commit 2677b50

File tree

5 files changed

+394
-271
lines changed

5 files changed

+394
-271
lines changed

conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77
def jp_server_config(jp_server_config):
88
return {
99
"ServerApp": {
10-
"jpserver_extensions": {"jupyter_server_nbmodel": True, "jupyter_server_ydoc": True}
10+
"jpserver_extensions": {"jupyter_server_nbmodel": True, "jupyter_server_ydoc": False}
1111
}
1212
}

jupyter_server_nbmodel/extension.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from __future__ import annotations
22

3+
import asyncio
4+
35
from jupyter_server.extension.application import ExtensionApp
46
from jupyter_server.services.kernels.handlers import _kernel_id_regex
57

@@ -27,27 +29,31 @@ def initialize_handlers(self):
2729
get_logger().warning("%i collaboration extensions found.", n_extensions)
2830
rtc_extension = next(iter(rtc_extensions))
2931

30-
self.__tasks = ExecutionStack()
32+
self.__execution_stack = ExecutionStack(
33+
manager=self.settings["kernel_manager"], ydoc_extension=rtc_extension
34+
)
3135

3236
self.handlers.extend(
3337
[
3438
(
3539
f"/api/kernels/{_kernel_id_regex}/execute",
3640
ExecuteHandler,
37-
{"ydoc_extension": rtc_extension, "execution_stack": self.__tasks},
41+
{"execution_stack": self.__execution_stack},
3842
),
3943
(
4044
f"/api/kernels/{_kernel_id_regex}/input",
4145
InputHandler,
46+
{"execution_stack": self.__execution_stack},
4247
),
4348
(
4449
f"/api/kernels/{_kernel_id_regex}/requests/{_request_id_regex}",
4550
RequestHandler,
46-
{"execution_stack": self.__tasks},
51+
{"execution_stack": self.__execution_stack},
4752
),
4853
]
4954
)
5055

5156
async def stop_extension(self):
52-
if hasattr(self, "__tasks"):
53-
del self.__tasks
57+
if hasattr(self, "__execution_stack"):
58+
get_logger().info("Disposing the execution stack…")
59+
await asyncio.wait_for(self.__execution_stack.dispose(), timeout=3)

0 commit comments

Comments
 (0)