private static async Task <Possible <CacheEntry?, Failure> > TryGetTemporalCacheEntryAsync( this ITwoPhaseFingerprintStore store, LoggingContext loggingContext, TimeTreeNode node, ContentFingerprint fingerprint) { // Unblock the caller await Task.Yield(); var result = await store.TryGetCacheEntryAsync( new WeakContentFingerprint(fingerprint.Hash), s_dummyPathSetHash, node.NodeFingerprint); Logger.Log.TemporalCacheEntryTrace(loggingContext, I($"Retrieving temporal cache entry: Node='{node}', Fingerprint='{fingerprint}' Success='{result.Succeeded}'")); if (result.Succeeded) { Logger.Log.TemporalCacheEntryTrace(loggingContext, I($"Retrieved temporal cache entry: Node='{node}', Fingerprint='{fingerprint}' MetadataHash='{result.Result?.MetadataHash ?? s_dummyPathSetHash}'")); } else { Logger.Log.TemporalCacheEntryTrace(loggingContext, I($"Failed retrieval of temporal cache entry: Node='{node}', Fingerprint='{fingerprint}' Failure:='{result.Failure.DescribeIncludingInnerFailures()}'")); } return(result); }
/// <summary> /// See <see cref="ITwoPhaseFingerprintStore.TryGetCacheEntryAsync"/> /// </summary> public virtual async Task <Possible <CacheEntry?, Failure> > TryGetCacheEntryAsync( Pip pip, WeakContentFingerprint weakFingerprint, ContentHash pathSetHash, StrongContentFingerprint strongFingerprint) { var result = await TwoPhaseFingerprintStore.TryGetCacheEntryAsync(weakFingerprint, pathSetHash, strongFingerprint); if (result.Succeeded) { Tracing.Logger.Log.PipTwoPhaseCacheGetCacheEntry( LoggingContext, pip.GetDescription(Context), weakFingerprint.ToString(), pathSetHash.ToString(), strongFingerprint.ToString(), result.Result.HasValue ? result.Result.Value.MetadataHash.ToString() : "<NOVALUE>"); } return(result); }