synchronized void doSynchronizationWithPrimary(InternalDistributedMember primary,
      InternalCache cache) {
    int maxChunkSize = 1000;
    try {
      List<EventID> giiEvents = getGIIEvents();
      if (giiEvents.size() == 0) {
        hasSynchronizedWithPrimary.set(true);
        return;
      }
      Collection<List<EventID>> chunks = null;

      if (giiEvents.size() > maxChunkSize) {
        chunks = getChunks(giiEvents, maxChunkSize);
      }

      if (chunks == null) {
        if (!removeDispatchedEvents(primary, cache, giiEvents)) {
          return;
        }
      } else {
        for (List<EventID> chunk : chunks) {
          if (!removeDispatchedEvents(primary, cache, chunk)) {
            return;
          }
        }
      }
      if (logger.isDebugEnabled()) {
        logger.debug("HARegionQueue {} has synced with primary on {}", regionName, primary);
      }
      hasSynchronizedWithPrimary.set(true);
    } finally {
      scheduleSynchronizationWithPrimaryInProgress.set(false);
    }
  }
expiry time for ThreadIdentifiers. In seconds.
geode-core/src/main/java/org/apache/geode/internal/cache/ha/HARegionQueue.java