googleapis/mcp-toolbox · error

failed to marshal batch to JSON: %w

Error message

failed to marshal batch to JSON: %w

What it means

protojson.Marshal failed to serialize the fetched Batch protobuf into JSON — an internal serialization failure that normally indicates an unexpected proto state rather than bad user input.

Source

Thrown at internal/sources/serverlessspark/serverlessspark.go:295

		batches = append(batches, batch)
	}
	return batches, nil
}

func (s *Source) GetBatch(ctx context.Context, name string) (map[string]any, error) {
	client := s.GetBatchControllerClient()
	req := &dataprocpb.GetBatchRequest{
		Name: fmt.Sprintf("projects/%s/locations/%s/batches/%s", s.GetProject(), s.GetLocation(), name),
	}

	batchPb, err := client.GetBatch(ctx, req)
	if err != nil {
		return nil, fmt.Errorf("failed to get batch: %w", err)
	}

	jsonBytes, err := protojson.Marshal(batchPb)
	if err != nil {
		return nil, fmt.Errorf("failed to marshal batch to JSON: %w", err)
	}

	var result map[string]any
	if err := json.Unmarshal(jsonBytes, &result); err != nil {
		return nil, fmt.Errorf("failed to unmarshal batch JSON: %w", err)
	}

	consoleUrl, err := BatchConsoleURLFromProto(batchPb)
	if err != nil {
		return nil, fmt.Errorf("error generating console url: %v", err)
	}
	logsUrl, err := BatchLogsURLFromProto(batchPb)
	if err != nil {
		return nil, fmt.Errorf("error generating logs url: %v", err)
	}

	wrappedResult := map[string]any{
		"consoleUrl": consoleUrl,

View on GitHub (pinned to 8cc6e09de2)

Solutions

  1. Retry the GetBatch call for a fresh proto message
  2. Check for unsupported proto fields (unknown types, non-UTF8 strings)
  3. Report upstream if consistently reproducible
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at internal/sources/serverlessspark/serverlessspark.go:295 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of googleapis/mcp-toolbox@8cc6e09de2 (2026-09-05). Data as JSON: /api/errors/edce15092d97ddc3. Report an issue: GitHub.