juicedata/juicefs · error

marshal protobuf: %w

Error message

marshal protobuf: %w

What it means

Returned by RemoteWriter.Push when protobuf marshalling of the assembled WriteRequest fails. This indicates structurally invalid data in the time series (e.g. invalid label names), not a network problem.

Source

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

			return err
		}
	}

	// Convert metrics to TimeSeries
	tsList, err := rw.ConvertMetricsToTimeSeries(mfs)
	if err != nil {
		return fmt.Errorf("convert metrics: %w", err)
	}

	if len(tsList) == 0 {
		return nil // No samples to push
	}

	// Send to remote write endpoint
	wr := &prompb.WriteRequest{Timeseries: tsList}
	data, err := wr.Marshal()
	if err != nil {
		return fmt.Errorf("marshal protobuf: %w", err)
	}

	compressed := snappy.Encode(nil, data)
	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])
		}
	}

View on GitHub (pinned to c9a67b23e8)

Solutions

  1. Validate metric/label naming before pushing to the remote write endpoint
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at sdk/java/libjfs/remote_write.go:164 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/47d336a5fb3d85c6. Report an issue: GitHub.