@@ -28,20 +28,30 @@ defmodule Expert.EngineNode do
2828 @ dialyzer { :nowarn_function , start: 3 }
2929
3030 def start ( % __MODULE__ { } = state , paths , from ) do
31- this_node = inspect ( Node . self ( ) )
32-
33- args = [
34- "--name" ,
35- Project . node_name ( state . project ) ,
36- "--cookie" ,
37- state . cookie ,
38- "--no-halt" ,
39- "-e" ,
40- "Node.connect(#{ this_node } )"
41- | path_append_arguments ( paths )
42- ]
43-
44- case Expert.Port . open_elixir ( state . project , args: args ) do
31+ this_node = to_string ( Node . self ( ) )
32+ dist_port = Forge.EPMD . dist_port ( )
33+
34+ args =
35+ [
36+ "--erl" ,
37+ "-start_epmd false" ,
38+ "--sname" ,
39+ Project . node_name ( state . project ) ,
40+ "--cookie" ,
41+ state . cookie ,
42+ "--no-halt" ,
43+ "-e" ,
44+ "Forge.NodePortMapper.register(); IO.puts(\" ok\" )"
45+ | path_append_arguments ( paths )
46+ ]
47+
48+ env =
49+ [
50+ { "EXPERT_PARENT_NODE" , this_node } ,
51+ { "EXPERT_PARENT_PORT" , to_string ( dist_port ) }
52+ ]
53+
54+ case Expert.Port . open_elixir ( state . project , args: args , env: env ) do
4555 { :error , :no_elixir , message } ->
4656 GenLSP . error ( Expert . get_lsp ( ) , message )
4757 Expert . terminate ( "Failed to find an elixir executable, shutting down" , 1 )
@@ -134,7 +144,7 @@ defmodule Expert.EngineNode do
134144
135145 defp start_net_kernel ( % Project { } = project ) do
136146 manager = Project . manager_node_name ( project )
137- :net_kernel . start ( manager , % { name_domain: :longnames } )
147+ :net_kernel . start ( manager , % { name_domain: :shortnames } )
138148 end
139149
140150 defp ensure_apps_started ( node ) do
@@ -294,7 +304,7 @@ defmodule Expert.EngineNode do
294304
295305 @ impl true
296306 def handle_call ( { :start , paths } , from , % State { } = state ) do
297- :ok = :net_kernel . monitor_nodes ( true , node_type: :visible )
307+ :ok = :net_kernel . monitor_nodes ( true , node_type: :all )
298308 Process . send_after ( self ( ) , :maybe_start_timeout , @ start_timeout )
299309
300310 case State . start ( state , paths , from ) do
@@ -365,7 +375,8 @@ defmodule Expert.EngineNode do
365375 end
366376
367377 @ impl true
368- def handle_info ( { _port , { :data , _message } } , % State { } = state ) do
378+ def handle_info ( { _port , { :data , message } } , % State { } = state ) do
379+ Logger . debug ( "Node port message: #{ to_string ( message ) } " )
369380 { :noreply , state }
370381 end
371382
0 commit comments