@ SuppressWarnings ( "checkstyle:npathcomplexity" ) void publishPartitionRuntimeState ( ) { if ( ! partitionStateManager . isInitialized ( ) ) { // do not send partition state until initialized! return ; } if ( ! node . isMaster ( ) ) { return ; } if ( ! areMigrationTasksAllowed ( ) ) { // migration is disabled because of a member leave, wait till enabled! return ; } PartitionRuntimeState partitionState = createPartitionStateInternal ( ) ; if ( partitionState == null ) { return ; } if ( logger . isFineEnabled ( ) ) { logger . fine ( "Publishing partition state, version: " + partitionState . getVersion ( ) ) ; } PartitionStateOperation op = new PartitionStateOperation ( partitionState , false ) ; OperationService operationService = nodeEngine . getOperationService ( ) ; Collection < Member > members = node . clusterService . getMembers ( ) ; for ( Member member : members ) { if ( ! member . localMember ( ) ) { try { operationService . send ( op , member . getAddress ( ) ) ; } catch ( Exception e ) { logger . finest ( e ) ; } } } }
Called on the master node to publish the current partition state to all cluster nodes . It will not publish the partition state if the partitions have not yet been initialized there is ongoing repartitioning or a node is joining the cluster .