'why function cluster.state().members() isUp has different values in different node of same cluster?

I have a cluster, includes 9 nodes, let's say node1, node2 ... node9, they all configured as seednodes In my code, it has below function to print out all members,

List<String> nodeAddressList = new ArrayList<>();
    Cluster cluster = Cluster.get(AkkaClusterManager.instance().clusterSystem());
    scala.collection.immutable.List<Member> nodeList = cluster.state().members().toList();
    Function1<Member,Void> itr = (Member node) -> {
        if (node.status() == MemberStatus.up()) {
            nodeAddressList.add(node.address().toString());
        }
        return null;
    };
    nodeList.foreach(itr);
    System.out.println(nodeAddressList.toString());

I find a weird thing, in node9's log, it have itself, node1, node3, node4, node6

while in node1's log, it have itself, node2, node3, node4, ..., node8. Does not have node9!

I don't understand why node9 have node1 as member, while node1 doesn't

Here is the akka config file

akka {
      actor {
        provider = "cluster"
        serialization-bindings {
          "com.test.akka.CborSerializable" = jackson-cbor
        }
      }
      remote {
        log-remote-lifecycle-events = off
        artery.enabled = on
        artery.canonical.port = 2551
        artery.canonical.hostname = nodename
        bind.hostname = localhost     
        bind.port = 2551             
      }

      cluster {
        seed-nodes = [
          "akka://ClusterSystem@node1:2551",
          ...
          "akka://ClusterSystem@node9:2551",
          ]
      }

      loggers = ["akka.event.slf4j.Slf4jLogger"]
      loglevel = "DEBUG"
      logging-filter = "akka.event.slf4j.Slf4jLoggingFilter"
    }


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source