juicedata/juicefs · error

send request: %w

Error message

send request: %w

What it means

Returned by RemoteWriter.Push when the HTTP POST to the Prometheus remote write endpoint fails at the transport level — connection refused, timeout, or DNS failure. The endpoint is unreachable, not merely erroring.

Source

Thrown at sdk/java/libjfs/remote_write.go:186

	req, err := http.NewRequest("POST", rw.url, bytes.NewReader(compressed))
	if err != nil {
		return fmt.Errorf("create request: %w", err)
	}

	req.Header.Set("Content-Encoding", "snappy")
	req.Header.Set("Content-Type", "application/x-protobuf")
	req.Header.Set("X-Prometheus-Remote-Write-Version", "0.1.0")

	if rw.auth != "" {
		if strings.Contains(rw.auth, ":") {
			parts := strings.Split(rw.auth, ":")
			req.SetBasicAuth(parts[0], parts[1])
		}
	}

	resp, err := rw.client.Do(req)
	if err != nil {
		return fmt.Errorf("send request: %w", err)
	}
	defer resp.Body.Close()

	if resp.StatusCode/100 != 2 {
		return fmt.Errorf("remote_write failed: %s", resp.Status)
	}

	return nil
}

// ConvertMetricsToTimeSeries converts Prometheus metric families to TimeSeries.
func (rw *RemoteWriter) ConvertMetricsToTimeSeries(mfs []*dto.MetricFamily) ([]prompb.TimeSeries, error) {
	now := model.Time(time.Now().UnixMilli())
	samples, err := expfmt.ExtractSamples(&expfmt.DecodeOptions{
		Timestamp: now,
	}, mfs...)
	if err != nil {
		return nil, fmt.Errorf("extract samples: %w", err)

View on GitHub (pinned to c9a67b23e8)

Solutions

  1. Verify the remote write URL is reachable from the client
  2. Check network/proxy settings and retry; transient network failures are expected
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at sdk/java/libjfs/remote_write.go:186 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of juicedata/juicefs@c9a67b23e8 (2026-09-06). Data as JSON: /api/errors/bf051dd95f0f55e0. Report an issue: GitHub.