private void createMemberState(MemberStateImpl memberState) {
   final Node node = factory.node;
   memberState.setAddress(node.getThisAddress());
   memberState.getMemberHealthStats().setOutOfMemory(node.isOutOfMemory());
   memberState.getMemberHealthStats().setActive(node.isActive());
   memberState
       .getMemberHealthStats()
       .setServiceThreadStats(node.getCpuUtilization().serviceThread);
   memberState.getMemberHealthStats().setOutThreadStats(node.getCpuUtilization().outThread);
   memberState.getMemberHealthStats().setInThreadStats(node.getCpuUtilization().inThread);
   PartitionService partitionService = factory.getPartitionService();
   Set<Partition> partitions = partitionService.getPartitions();
   memberState.clearPartitions();
   for (Partition partition : partitions) {
     if (partition.getOwner() != null && partition.getOwner().localMember()) {
       memberState.addPartition(partition.getPartitionId());
     }
   }
   Collection<HazelcastInstanceAwareInstance> proxyObjects =
       new ArrayList<HazelcastInstanceAwareInstance>(factory.getProxies());
   createMemState(memberState, proxyObjects.iterator(), InstanceType.MAP);
   createMemState(memberState, proxyObjects.iterator(), InstanceType.QUEUE);
   createMemState(memberState, proxyObjects.iterator(), InstanceType.TOPIC);
   createRuntimeProps(memberState);
   // uncomment when client changes are made
   // createMemState(memberState, proxyObjects.iterator(), InstanceType.ATOMIC_LONG);
   // createMemState(memberState, proxyObjects.iterator(), InstanceType.COUNT_DOWN_LATCH);
   // createMemState(memberState, proxyObjects.iterator(), InstanceType.SEMAPHORE);
 }
 @Override
 public void doRun() {
   Collection<MemberInfo> lsMemberInfos = membersUpdate.getMemberInfos();
   List<Address> newMemberList = new ArrayList<Address>(lsMemberInfos.size());
   for (final MemberInfo memberInfo : lsMemberInfos) {
     newMemberList.add(memberInfo.address);
   }
   doCall(membersUpdate, newMemberList, true);
   systemLogService.logJoin("JoinRunnable update members done.");
   doCall(new SyncProcess(), newMemberList, false);
   systemLogService.logJoin("JoinRunnable sync done.");
   doCall(new ConnectionCheckCall(), newMemberList, false);
   systemLogService.logJoin("JoinRunnable connection check done.");
 }
 private Set<String> getLongInstanceNames() {
   Set<String> setLongInstanceNames = new HashSet<String>(maxVisibleInstanceCount);
   Collection<HazelcastInstanceAwareInstance> proxyObjects =
       new ArrayList<HazelcastInstanceAwareInstance>(factory.getProxies());
   collectInstanceNames(setLongInstanceNames, proxyObjects.iterator(), InstanceType.MAP);
   collectInstanceNames(setLongInstanceNames, proxyObjects.iterator(), InstanceType.QUEUE);
   collectInstanceNames(setLongInstanceNames, proxyObjects.iterator(), InstanceType.TOPIC);
   // uncomment when client changes are made
   // collectInstanceNames(setLongInstanceNames, proxyObjects.iterator(),
   // InstanceType.ATOMIC_NUMBER);
   // collectInstanceNames(setLongInstanceNames, proxyObjects.iterator(),
   // InstanceType.COUNT_DOWN_LATCH);
   // collectInstanceNames(setLongInstanceNames, proxyObjects.iterator(), InstanceType.SEMAPHORE);
   return setLongInstanceNames;
 }
  void updateMembers(Collection<MemberInfo> lsMemberInfos) {
    checkServiceThread();
    final Map<Address, MemberImpl> mapOldMembers = new HashMap<Address, MemberImpl>();
    for (MemberImpl member : lsMembers) {
      mapOldMembers.put(member.getAddress(), member);
    }
    if (mapOldMembers.size() == lsMemberInfos.size()) {
      boolean same = true;
      for (MemberInfo memberInfo : lsMemberInfos) {
        MemberImpl member = mapOldMembers.get(memberInfo.getAddress());
        if (member == null || !member.getUuid().equals(memberInfo.uuid)) {
          same = false;
          break;
        }
      }
      if (same) {
        logger.log(Level.FINEST, "No need to process member update...");
        return;
      }
    }

    logger.log(Level.FINEST, "Updating Members");
    lsMembers.clear();
    dataMemberCount.reset();
    mapMembers.clear();
    memberMasterConfirmationTimes.clear();
    for (MemberInfo memberInfo : lsMemberInfos) {
      MemberImpl member = mapOldMembers.get(memberInfo.address);
      if (member == null) {
        member = addMember(memberInfo.address, memberInfo.nodeType, memberInfo.uuid);
      } else {
        addMember(member);
      }
      member.didRead();
    }
    if (!lsMembers.contains(thisMember)) {
      throw new RuntimeException("Member list doesn't contain local member!");
    }
    heartBeater();
    node.getClusterImpl().setMembers(lsMembers);
    node.setJoined();
    logger.log(Level.INFO, this.toString());
  }