IReadOnlyDictionary <string, Invocations.Invocation> GetInvocations() { return(Cache.GetOrCreate( "Builds.tsv", newEntry => { var buildXLInvocations = new Invocations(); newEntry.ExpirationTokens.Add(m_fileProvider.Watch(buildXLInvocations.GetBuildTsvFilePath())); newEntry.SetSlidingExpiration(TimeSpan.FromMinutes(5)); var invocations = buildXLInvocations.GetInvocations(m_loggingContext); var dictionary = new Dictionary <string, Invocations.Invocation>(invocations.Count, StringComparer.OrdinalIgnoreCase); foreach (var invocation in invocations) { dictionary.Add(invocation.SessionId, invocation); } return dictionary; })); }