Source:
<code>protected void onAfterBackupSession( @Nonnull final MemcachedBackupSession session, final boolean backupWasForced, @Nonnull final Future<BackupResult> result, @Nonnull final String requestId, @Nonnull final BackupSessionService backupSessionService ) { if ( !_sessionIdFormat.isValid( session.getIdInternal() ) ) { return; } try { final long start = System.currentTimeMillis(); final int maxInactiveInterval = session.getMaxInactiveInterval(); final byte[] validityData = encode( maxInactiveInterval, session.getLastAccessedTimeInternal(), session.getThisAccessedTimeInternal() ); final String validityKey = _sessionIdFormat.createValidityInfoKeyName( session.getIdInternal() ); final int expiration = maxInactiveInterval <= 0 ? 0 : maxInactiveInterval; <START> _memcached.set( validityKey, toMemcachedExpiration(expiration), validityData ); <END> if ( _log.isDebugEnabled() ) { _log.debug( "Stored session validity info for session " + session.getIdInternal() ); } final boolean pingSessionIfBackupWasSkipped = !backupWasForced; final boolean performAsyncTasks = pingSessionIfBackupWasSkipped || _storeSecondaryBackup; if ( performAsyncTasks ) { final Callable<?> backupSessionTask = new OnAfterBackupSessionTask( session, result, pingSessionIfBackupWasSkipped, backupSessionService, _storeSecondaryBackup, validityKey, validityData ); _executor.submit( backupSessionTask ); } _stats.registerSince( NON_STICKY_AFTER_BACKUP, start ); } catch( final Throwable e ) { _log.warn( "An error occurred during onAfterBackupSession.", e ); } }</code><technical_language>above, if isSessionBackupAsync this block</technical_language>

Target:
protected void onAfterBackupSession( @Nonnull final MemcachedBackupSession session, final boolean backupWasForced, @Nonnull final Future<BackupResult> result, @Nonnull final String requestId, @Nonnull final BackupSessionService backupSessionService ) { if ( !_sessionIdFormat.isValid( session.getIdInternal() ) ) { return; } try { final long start = System.currentTimeMillis(); final int maxInactiveInterval = session.getMaxInactiveInterval(); final byte[] validityData = encode( maxInactiveInterval, session.getLastAccessedTimeInternal(), session.getThisAccessedTimeInternal() ); final String validityKey = _sessionIdFormat.createValidityInfoKeyName( session.getIdInternal() ); final int expiration = maxInactiveInterval <= 0 ? 0 : maxInactiveInterval; final Future<Boolean> validityResult = _memcached.set( validityKey, toMemcachedExpiration(expiration), validityData ); if ( !_manager.isSessionBackupAsync() ) { validityResult.get( _manager.getSessionBackupTimeout(), TimeUnit.MILLISECONDS ); } if ( _log.isDebugEnabled() ) { _log.debug( "Stored session validity info for session " + session.getIdInternal() ); } final boolean pingSessionIfBackupWasSkipped = !backupWasForced; final boolean performAsyncTasks = pingSessionIfBackupWasSkipped || _storeSecondaryBackup; if ( performAsyncTasks ) { final Callable<?> backupSessionTask = new OnAfterBackupSessionTask( session, result, pingSessionIfBackupWasSkipped, backupSessionService, _storeSecondaryBackup, validityKey, validityData ); _executor.submit( backupSessionTask ); } _stats.registerSince( NON_STICKY_AFTER_BACKUP, start ); } catch( final Throwable e ) { _log.warn( "An error occurred during onAfterBackupSession.", e ); } }