@@ -311,6 +311,7 @@ init(Config) ->
311
311
{ok , recover , State , [{next_event , cast , go }]}.
312
312
313
313
do_init (#{id := Id ,
314
+ uid := UId ,
314
315
cluster_name := ClusterName } = Config0 ) ->
315
316
Key = ra_lib :ra_server_id_to_local_name (Id ),
316
317
true = ets :insert (ra_state , {Key , init , unknown }),
@@ -325,15 +326,12 @@ do_init(#{id := Id,
325
326
process_flag (message_queue_data , MsgQData ),
326
327
process_flag (min_bin_vheap_size , MinBinVheapSize ),
327
328
process_flag (min_heap_size , MinHeapSize ),
328
- % % wait for wal for a bit before initialising the server state and log
329
- #{cluster := Cluster } = ServerState = ra_server :init (Config ),
330
- LogId = ra_server :log_id (ServerState ),
331
- UId = ra_server :uid (ServerState ),
332
- % ensure ra_directory has the new pid
333
329
#{names := Names } = SysConf ,
330
+ % % register with ra_directory _before_ initialsing the ra server state
334
331
ok = ra_directory :register_name (Names , UId , self (),
335
332
maps :get (parent , Config , undefined ), Key ,
336
333
ClusterName ),
334
+ #{cluster := Cluster } = ServerState = ra_server :init (Config ),
337
335
338
336
% ensure each relevant erlang node is connected
339
337
PeerNodes = [PeerNode ||
@@ -362,6 +360,7 @@ do_init(#{id := Id,
362
360
ReceiveSnapshotTimeout = maps :get (receive_snapshot_timeout , SysConf ,
363
361
? DEFAULT_RECEIVE_SNAPSHOT_TIMEOUT ),
364
362
AtenPollInt = application :get_env (aten , poll_interval , 1000 ),
363
+ LogId = ra_server :log_id (ServerState ),
365
364
State = # state {conf = # conf {log_id = LogId ,
366
365
cluster_name = ClusterName ,
367
366
name = Key ,
0 commit comments