Ignore orphan logs in the attached runtime (#1451)

This commit is contained in:
Jonatan Kłosko 2022-09-30 21:05:46 +02:00 committed by GitHub
parent 3aa34393c5
commit 2de629d605
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 3 deletions

View file

@ -39,7 +39,7 @@ defmodule Livebook.Runtime.Attached do
:pong -> :pong ->
server_pid = server_pid =
Livebook.Runtime.ErlDist.initialize(node, Livebook.Runtime.ErlDist.initialize(node,
node_manager_opts: [parent_node: node()] node_manager_opts: [parent_node: node(), capture_orphan_logs: false]
) )
{:ok, %{runtime | server_pid: server_pid}} {:ok, %{runtime | server_pid: server_pid}}

View file

@ -42,6 +42,9 @@ defmodule Livebook.Runtime.ErlDist.NodeManager do
It is used to disconnect the node when the server terminates, It is used to disconnect the node when the server terminates,
which happens when the last session using the node disconnects. which happens when the last session using the node disconnects.
Defaults to `nil` Defaults to `nil`
* `:capture_orphan_logs` - whether to capture logs out of Livebook
evaluator's scope. Defaults to `true`
""" """
def start(opts \\ []) do def start(opts \\ []) do
{opts, gen_opts} = split_opts(opts) {opts, gen_opts} = split_opts(opts)
@ -84,6 +87,7 @@ defmodule Livebook.Runtime.ErlDist.NodeManager do
unload_modules_on_termination = Keyword.get(opts, :unload_modules_on_termination, true) unload_modules_on_termination = Keyword.get(opts, :unload_modules_on_termination, true)
auto_termination = Keyword.get(opts, :auto_termination, true) auto_termination = Keyword.get(opts, :auto_termination, true)
parent_node = Keyword.get(opts, :parent_node) parent_node = Keyword.get(opts, :parent_node)
capture_orphan_logs = Keyword.get(opts, :capture_orphan_logs, true)
## Initialize the node ## Initialize the node
@ -112,7 +116,8 @@ defmodule Livebook.Runtime.ErlDist.NodeManager do
runtime_servers: [], runtime_servers: [],
initial_ignore_module_conflict: initial_ignore_module_conflict, initial_ignore_module_conflict: initial_ignore_module_conflict,
original_standard_error: original_standard_error, original_standard_error: original_standard_error,
parent_node: parent_node parent_node: parent_node,
capture_orphan_logs: capture_orphan_logs
}} }}
end end
@ -152,7 +157,10 @@ defmodule Livebook.Runtime.ErlDist.NodeManager do
end end
def handle_info({:orphan_log, _output} = message, state) do def handle_info({:orphan_log, _output} = message, state) do
for pid <- state.runtime_servers, do: send(pid, message) if state.capture_orphan_logs do
for pid <- state.runtime_servers, do: send(pid, message)
end
{:noreply, state} {:noreply, state}
end end