public async Task <LineProtocolWriteResult> WriteAsync(LineProtocolPayload payload, CancellationToken cancellationToken = default(CancellationToken)) { var result = await _policy.ExecuteAndCaptureAsync(async() => { var payloadText = new StringWriter(); payload.Format(payloadText); var content = new StringContent(payloadText.ToString(), Encoding.UTF8); var response = await _httpClient.PostAsync(_influxDbSettings.Endpoint, content, cancellationToken).ConfigureAwait(false); response.EnsureSuccessStatusCode(); return(new LineProtocolWriteResult(true, null)); }, cancellationToken); if (result.Outcome == OutcomeType.Failure) { _logger.LogError(LoggingEvents.InfluxDbWriteError, result.FinalException, "Failed to write to InfluxDB"); return(new LineProtocolWriteResult(false, result.FinalException.ToString())); } _logger.LogDebug("Successful write to InfluxDB"); return(result.Result); }
public async Task <LineProtocolWriteResult> WriteAsync(LineProtocolPayload payload, CancellationToken cancellationToken = default(CancellationToken)) { var endpoint = $"write?db={Uri.EscapeDataString(_database)}"; if (_retentionPolicy.IsPresent()) { endpoint += $"&rp={Uri.EscapeDataString(_retentionPolicy)}"; } if (_consistenency.IsPresent()) { endpoint += $"&consistency={Uri.EscapeDataString(_consistenency)}"; } var result = await _policy.ExecuteAndCaptureAsync(async() => { var payloadText = new StringWriter(); payload.Format(payloadText); var content = new StringContent(payloadText.ToString(), Encoding.UTF8); var response = await _httpClient.PostAsync(endpoint, content, cancellationToken).ConfigureAwait(false); return(response.IsSuccessStatusCode ? new LineProtocolWriteResult(true, null) : new LineProtocolWriteResult(false, $"{response.StatusCode} {response.ReasonPhrase}")); }, cancellationToken); return(result.Result); }
public string PayloadFormatted() { var result = new StringWriter(); _payload.Format(result); return(result.ToString()); }
public async Task <LineProtocolWriteResult> WriteAsync( LineProtocolPayload payload, CancellationToken cancellationToken = default(CancellationToken)) { if (NeedToBackoff()) { return(new LineProtocolWriteResult(false, "Too many failures in writing to InfluxDB, Circuit Opened")); } var payloadText = new StringWriter(); payload.Format(payloadText); var content = new StringContent(payloadText.ToString(), Encoding.UTF8); try { var response = await _httpClient.PostAsync(_influxDbSettings.Endpoint, content, cancellationToken).ConfigureAwait(false); if (!response.IsSuccessStatusCode) { Interlocked.Increment(ref _failureAttempts); var errorMessage = $"Failed to write to InfluxDB - StatusCode: {response.StatusCode} Reason: {response.ReasonPhrase}"; _logger.LogError(LoggingEvents.InfluxDbWriteError, errorMessage); return(new LineProtocolWriteResult(false, errorMessage)); } _logger.LogTrace("Successful write to InfluxDB"); return(new LineProtocolWriteResult(true)); } catch (Exception ex) { Interlocked.Increment(ref _failureAttempts); _logger.LogError(LoggingEvents.InfluxDbWriteError, "Failed to write to InfluxDB", ex); return(new LineProtocolWriteResult(false, ex.ToString())); } }
public async Task <LineProtocolWriteResult> WriteAsync(LineProtocolPayload payload, CancellationToken cancellationToken = default(CancellationToken)) { var endpoint = $"write?db={Uri.EscapeDataString(_database)}"; if (_retentionPolicy.IsPresent()) { endpoint += $"&rp={Uri.EscapeDataString(_retentionPolicy)}"; } if (_consistenency.IsPresent()) { endpoint += $"&consistency={Uri.EscapeDataString(_consistenency)}"; } var result = await _policy.ExecuteAndCaptureAsync(async() => { var payloadText = new StringWriter(); payload.Format(payloadText); var content = new StringContent(payloadText.ToString(), Encoding.UTF8); var response = await _httpClient.PostAsync(endpoint, content, cancellationToken).ConfigureAwait(false); return(response.IsSuccessStatusCode ? new LineProtocolWriteResult(true, null) : new LineProtocolWriteResult(false, $"{response.StatusCode} {response.ReasonPhrase}")); }, cancellationToken); if (result.Outcome == OutcomeType.Failure) { _logger.LogError(LoggingEvents.InfluxDbWriteError, result.FinalException, "Failed to write to InfluxDB {error}", result.Result.ErrorMessage); } else { _logger.LogDebug("Successful write to InfluxDB"); } return(result.Result); }