@@ -249,12 +249,13 @@ impl ProcessGroups {
249249 . collect ( ) ;
250250
251251 if let Some ( manager) = DIST_MANAGER . get ( )
252- && let Some ( tx) = manager. get_node_tx ( from_node) {
253- let msg = PgMessage :: SyncResponse { groups } ;
254- if let Ok ( payload ) = postcard :: to_allocvec ( & msg ) {
255- let _ = tx . try_send ( DistMessage :: ProcessGroups { payload } ) ;
256- }
252+ && let Some ( tx) = manager. get_node_tx ( from_node)
253+ {
254+ let msg = PgMessage :: SyncResponse { groups } ;
255+ if let Ok ( payload ) = postcard :: to_allocvec ( & msg ) {
256+ let _ = tx . try_send ( DistMessage :: ProcessGroups { payload } ) ;
257257 }
258+ }
258259 }
259260 PgMessage :: SyncResponse { groups } => {
260261 tracing:: debug!(
@@ -310,32 +311,33 @@ impl ProcessGroups {
310311 /// Request sync from a newly connected node.
311312 pub fn request_sync ( & self , node_atom : Atom ) {
312313 if let Some ( manager) = DIST_MANAGER . get ( )
313- && let Some ( tx) = manager. get_node_tx ( node_atom) {
314- // Ask them to send their group memberships to us
315- let msg = PgMessage :: SyncRequest ;
316- if let Ok ( payload) = postcard:: to_allocvec ( & msg) {
317- let _ = tx. try_send ( DistMessage :: ProcessGroups { payload } ) ;
318- }
319-
320- // Also push our local memberships to them
321- let groups: Vec < ( String , Vec < Pid > ) > = self
322- . groups
323- . iter ( )
324- . map ( |r| {
325- let local_members: Vec < Pid > =
326- r. value ( ) . iter ( ) . filter ( |p| p. is_local ( ) ) . copied ( ) . collect ( ) ;
327- ( r. key ( ) . clone ( ) , local_members)
328- } )
329- . filter ( |( _, members) | !members. is_empty ( ) )
330- . collect ( ) ;
314+ && let Some ( tx) = manager. get_node_tx ( node_atom)
315+ {
316+ // Ask them to send their group memberships to us
317+ let msg = PgMessage :: SyncRequest ;
318+ if let Ok ( payload) = postcard:: to_allocvec ( & msg) {
319+ let _ = tx. try_send ( DistMessage :: ProcessGroups { payload } ) ;
320+ }
331321
332- if !groups. is_empty ( ) {
333- let response = PgMessage :: SyncResponse { groups } ;
334- if let Ok ( payload) = postcard:: to_allocvec ( & response) {
335- let _ = tx. try_send ( DistMessage :: ProcessGroups { payload } ) ;
336- }
322+ // Also push our local memberships to them
323+ let groups: Vec < ( String , Vec < Pid > ) > = self
324+ . groups
325+ . iter ( )
326+ . map ( |r| {
327+ let local_members: Vec < Pid > =
328+ r. value ( ) . iter ( ) . filter ( |p| p. is_local ( ) ) . copied ( ) . collect ( ) ;
329+ ( r. key ( ) . clone ( ) , local_members)
330+ } )
331+ . filter ( |( _, members) | !members. is_empty ( ) )
332+ . collect ( ) ;
333+
334+ if !groups. is_empty ( ) {
335+ let response = PgMessage :: SyncResponse { groups } ;
336+ if let Ok ( payload) = postcard:: to_allocvec ( & response) {
337+ let _ = tx. try_send ( DistMessage :: ProcessGroups { payload } ) ;
337338 }
338339 }
340+ }
339341 }
340342
341343 /// Broadcast a join to all connected nodes.
@@ -365,14 +367,15 @@ impl ProcessGroups {
365367 /// Broadcast a pg message to all connected nodes.
366368 fn broadcast_pg_message ( & self , msg : & PgMessage ) {
367369 if let Some ( manager) = DIST_MANAGER . get ( )
368- && let Ok ( payload) = postcard:: to_allocvec ( msg) {
369- let dist_msg = DistMessage :: ProcessGroups { payload } ;
370- for node_atom in manager . connected_nodes ( ) {
371- if let Some ( tx ) = manager. get_node_tx ( node_atom ) {
372- let _ = tx . try_send ( dist_msg . clone ( ) ) ;
373- }
370+ && let Ok ( payload) = postcard:: to_allocvec ( msg)
371+ {
372+ let dist_msg = DistMessage :: ProcessGroups { payload } ;
373+ for node_atom in manager. connected_nodes ( ) {
374+ if let Some ( tx ) = manager . get_node_tx ( node_atom ) {
375+ let _ = tx . try_send ( dist_msg . clone ( ) ) ;
374376 }
375377 }
378+ }
376379 }
377380}
378381
0 commit comments