private Task <PinResponse> PinAsync(PinRequest request, CancellationToken token) { return(RunFuncAsync( request.Header, async(context, session) => { PinResult pinResult = await session.PinAsync( context.OperationContext, request.ContentHash.ToContentHash((HashType)request.HashType), context.Token); return new PinResponse { Header = new ResponseHeader( context.StartTime, pinResult.Succeeded, (int)pinResult.Code, pinResult.ErrorMessage, pinResult.Diagnostics) }; }, (context, errorMessage) => new PinResponse { Header = ResponseHeader.Failure(context.StartTime, (int)PinResult.ResultCode.Error, errorMessage) }, token)); }
private async Task <IEnumerable <Task <Indexed <PinResult> > > > UpdateBlobStoreAsync(Context context, IReadOnlyList <ContentHash> contentHashes, DateTime endDateTime, CancellationToken cts) { // Convert missing content hashes to blob Ids var blobIds = contentHashes.Select(c => ToVstsBlobIdentifier(c.ToBlobIdentifier())).ToList(); // Call TryReference on the blob ids var references = blobIds.Distinct().ToDictionary( blobIdentifier => blobIdentifier, _ => (IEnumerable <BlobReference>) new[] { new BlobReference(endDateTime) }); // TODO: In groups of 1000 (bug 1365340) var referenceResults = await ArtifactHttpClientErrorDetectionStrategy.ExecuteWithTimeoutAsync( context, "UpdateBlobStore", innerCts => BlobStoreHttpClient.TryReferenceAsync(references, cancellationToken: innerCts), cts).ConfigureAwait(false); Tracer.RecordPinSatisfiedFromRemote(); // There's 1-1 mapping between given content hashes and blob ids var remoteResults = blobIds .Select((blobId, i) => { PinResult pinResult = referenceResults.ContainsKey(blobId) ? PinResult.ContentNotFound : PinResult.Success; if (pinResult.Succeeded) { BackingContentStoreExpiryCache.Instance.AddExpiry(contentHashes[i], endDateTime); } return(pinResult.WithIndex(i)); }); return(remoteResults.AsTasks()); }
public static PinResult ShouldBeContentNotFound(this PinResult result) { Assert.True(result.Code == PinResult.ResultCode.ContentNotFound, $"Pin operation should not find content, but it had expected result: {result}"); return(result); }
public static PinResult ShouldBeSuccess(this PinResult result) { Assert.True(result.Succeeded, $"Pin operation should succeed, but it failed. {result}"); return(result); }
public void GetPinResult(PinResult pinResult, string playerNickname) { this.pinResult = pinResult; }