protected virtual void ProfileRetry(Guid profileId, int retryStart, ResourceRetryReason reason) { if (mResourceConsumer == null) { return; } mResourceConsumer.Retry(profileId, retryStart, reason); }
/// <summary> /// This method is used to keep incoming threads cycling while the first thread retrieves the entity from /// the persistence store. /// </summary> /// <param name="cacheHolder">The current cache holder.</param> /// <param name="traceId">The resource traceid</param> /// <param name="status">The final status.</param> /// <returns></returns> private void Gatekeeper(EntityCacheHolder <K, E> cacheHolder, Guid traceId, out ResourceRequestResult status, int attempts = 5) { int retryStart = Environment.TickCount; while (cacheHolder.State != EntityCacheHolderState.Completed && --attempts > 0) { cacheHolder.Wait(); mResourceConsumer.Retry(traceId, retryStart, ResourceRetryReason.Timeout); retryStart = Environment.TickCount; } if (cacheHolder.State == EntityCacheHolderState.Completed) { status = ResourceRequestResult.Success; } else if (attempts <= 0) { status = ResourceRequestResult.RetryExceeded; } else { status = ResourceRequestResult.TaskCancelled; } }
/// <summary> /// This method is called if a session request needs to be retried. /// </summary> /// <param name="profileId">The trace id.</param> /// <param name="retryStart">The retry tick count.</param> /// <param name="reason">The retry reason.</param> protected void ProfileRetry(Guid profileId, int retryStart, ResourceRetryReason reason) { mResourceConsumer?.Retry(profileId, retryStart, reason); }