@Override
  public void installView(GMSMembershipView<ID> v) {
    view = v;

    if (jgAddress.getVmViewId() < 0) {
      jgAddress.setVmViewId(localAddress.getVmViewId());
    }
    List<JGAddress> mbrs = v.getMembers().stream().map(JGAddress::new).collect(Collectors.toList());
    ViewId vid = new ViewId(new JGAddress(v.getCoordinator()), v.getViewId());
    View jgv = new View(vid, new ArrayList<>(mbrs));
    if (logger.isTraceEnabled()) {
      logger.trace("installing view into JGroups stack: {}", jgv);
    }
    myChannel.down(new Event(Event.VIEW_CHANGE, jgv));

    addressesWithIoExceptionsProcessed.clear();
    if (encrypt != null) {
      encrypt.installView(v);
    }
    synchronized (scheduledMcastSeqnos) {
      for (ID mbr : v.getCrashedMembers()) {
        scheduledMcastSeqnos.remove(mbr);
      }
      for (ID mbr : v.getShutdownMembers()) {
        scheduledMcastSeqnos.remove(mbr);
      }
    }
  }
JGroups picks an IPv6 address if preferIPv4Stack is false or not set and preferIPv6Addresses is
not set or is true. We want it to use an IPv4 address for a dual-IP stack so that both IPv4 and
IPv6 messaging work
geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessenger.java