public TrackMetric ( string name, double value, string>.IDictionary |
||
name | string | |
value | double | |
properties | string>.IDictionary | |
return | void |
private void TrackIndexMetrics(NuGetSearcherManager searcherManager, SearchTelemetryClient searchTelemetryClient) { var searcher = searcherManager.Get(); try { // Track number of documents in index searchTelemetryClient.TrackMetric(SearchTelemetryClient.MetricName.LuceneNumDocs, searcher.IndexReader.NumDocs()); // Track time between Lucene commit and reopen string temp; if (searcher.CommitUserData.TryGetValue("commitTimeStamp", out temp)) { var commitTimestamp = DateTimeOffset.Parse(temp, null, DateTimeStyles.AssumeUniversal); searchTelemetryClient.TrackMetric(SearchTelemetryClient.MetricName.LuceneLoadLag, (searcher.LastReopen - commitTimestamp.UtcDateTime).TotalSeconds, new Dictionary <string, string>() { { SearchTelemetryClient.MetricName.LuceneLastReopen, searcher.LastReopen.ToString("o") }, { SearchTelemetryClient.MetricName.LuceneCommitTimestamp, commitTimestamp.UtcDateTime.ToString("o") } }); } } finally { searcherManager.Release(searcher); } }
private async void ReopenCallback(object state) { try { int val = Interlocked.Increment(ref _gate); if (val > 1) { _logger.LogInformation(LogMessages.SearchIndexAlreadyReopened, Thread.CurrentThread.ManagedThreadId); Interlocked.Decrement(ref _gate); return; } _logger.LogInformation(LogMessages.SearchIndexReopenStarted, Thread.CurrentThread.ManagedThreadId); try { var stopwatch = Stopwatch.StartNew(); var newConfig = await _configFactory.Get <BasicSearchConfiguration>(); _searcherManager.MaybeReopen(newConfig); stopwatch.Stop(); _logger.LogInformation(LogMessages.SearchIndexReopenCompleted, stopwatch.Elapsed.TotalSeconds, Thread.CurrentThread.ManagedThreadId); _searchTelemetryClient.TrackMetric( SearchTelemetryClient.MetricName.SearchIndexReopenDuration, stopwatch.Elapsed.TotalSeconds); TrackIndexMetrics(_searcherManager, _searchTelemetryClient); } finally { Interlocked.Decrement(ref _gate); } } catch (Exception e) { _logger.LogError(LogMessages.SearchIndexReopenFailed, e); _searchTelemetryClient.TrackMetric(SearchTelemetryClient.MetricName.SearchIndexReopenFailed, 1); } }
private void TrackIndexMetrics(NuGetSearcherManager searcherManager, SearchTelemetryClient searchTelemetryClient) { var searcher = searcherManager.Get(); try { // Track number of documents in index searchTelemetryClient.TrackMetric(SearchTelemetryClient.MetricName.LuceneNumDocs, searcher.IndexReader.NumDocs()); // Track time between Lucene commit and reopen string temp; if (searcher.CommitUserData.TryGetValue("commitTimeStamp", out temp)) { var commitTimestamp = DateTimeOffset.Parse(temp, null, DateTimeStyles.AssumeUniversal); searchTelemetryClient.TrackMetric(SearchTelemetryClient.MetricName.LuceneLoadLag, (searcher.LastReopen - commitTimestamp.UtcDateTime).TotalSeconds, new Dictionary<string, string>() { { SearchTelemetryClient.MetricName.LuceneLastReopen, searcher.LastReopen.ToString("o") }, { SearchTelemetryClient.MetricName.LuceneCommitTimestamp, commitTimestamp.UtcDateTime.ToString("o") } }); } } finally { searcherManager.Release(searcher); } }