@edu.umd.cs.findbugs.annotations.SuppressWarnings(value="ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIELD",justification="sync on localExceptions guards concurrent modification but this is a replacement") public void initRecoveredVersion(T member,RegionVersionHolder<T> v,boolean latestOplog){
  RegionVersionHolder<T> recovered=v.clone();
  if (member == null || member.equals(myId)) {
synchronized (localExceptions) {
      if (latestOplog || localVersion.get() == 0) {
        localExceptions=recovered;
        if (logger.isTraceEnabled(LogMarker.RVV)) {
          logger.trace(LogMarker.RVV,"initRecoveredVersion setting local version to {}",recovered.version);
        }
        localVersion.set(recovered.version);
      }
    }
  }
 else {
    Long gcVersion=memberToGCVersion.get(member);
synchronized (memberToVersion) {
      RegionVersionHolder<T> oldVersion=memberToVersion.get(member);
      if (latestOplog || oldVersion == null || oldVersion.version == 0) {
        if (gcVersion != null) {
          recovered.removeExceptionsOlderThan(gcVersion);
        }
        memberToVersion.put(member,recovered);
      }
    }
  }
}

@ edu . umd . cs . findbugs . annotations . SuppressWarnings ( value = "ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIELD" , justification = "sync on localExceptions guards concurrent modification but this is a replacement" ) public void initRecoveredVersion ( T member , RegionVersionHolder < T > v , boolean latestOplog ) { RegionVersionHolder < T > recovered = v . clone ( ) ; if ( member == null || member . equals ( myId ) ) { synchronized ( localExceptions ) { if ( latestOplog || localVersion . get ( ) == 0 ) { localExceptions = recovered ; if ( logger . isTraceEnabled ( LogMarker . RVV ) ) { logger . trace ( LogMarker . RVV , "initRecoveredVersion setting local version to {}" , recovered . version ) ; } localVersion . set ( recovered . version ) ; } } } else { Long gcVersion = memberToGCVersion . get ( member ) ; synchronized ( memberToVersion ) { RegionVersionHolder < T > oldVersion = memberToVersion . get ( member ) ; if ( latestOplog || oldVersion == null || oldVersion . version == 0 ) { if ( gcVersion != null ) { recovered . removeExceptionsOlderThan ( gcVersion ) ; } memberToVersion . put ( member , recovered ) ; } } } }
records a version holder that we have recovered from disk . this version holder replaces the current version holder if it dominates the version holder we already have . this method will called once for each oplog we recover .
