juicedata/juicefs · error

extract samples: %w

Error message

extract samples: %w

What it means

Returned by ConvertMetricsToTimeSeries when expfmt.ExtractSamples fails to decode samples from the metric families — e.g. inconsistent label cardinality or histogram/summary fields that cannot produce samples. The wrapped error names the extraction failure.

Source

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

		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)
	}

	var tsList []prompb.TimeSeries
	for _, sample := range samples {
		// Convert model.Metric to prompb.Label slice
		labels := make([]prompb.Label, 0, len(sample.Metric))
		for name, value := range sample.Metric {
			labels = append(labels, prompb.Label{
				Name:  string(name),
				Value: string(value),
			})
		}

		tsList = append(tsList, prompb.TimeSeries{
			Labels: labels,
			Samples: []prompb.Sample{{
				Value:     float64(sample.Value),
				Timestamp: int64(sample.Timestamp),

View on GitHub (pinned to c9a67b23e8)

Solutions

  1. Ensure exported metrics are well-formed (consistent labels, valid histograms)
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at sdk/java/libjfs/remote_write.go:204 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/91bdf91826b8b704. Report an issue: GitHub.