googleapis/mcp-toolbox · error

failed to unmarshal batch JSON: %w

Error message

failed to unmarshal batch JSON: %w

What it means

encoding/json.Unmarshal failed to convert the protojson-produced JSON into map[string]any in GetBatch — the serialized proto contained a JSON shape the standard decoder rejects (e.g. a non-string map key).

Source

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

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,
		"logsUrl":    logsUrl,
		"batch":      result,
	}

	return wrappedResult, nil

View on GitHub (pinned to 8cc6e09de2)

Solutions

  1. Retry the operation on transient data
  2. Inspect the JSON payload in logs for invalid structures
  3. Report if specific batches consistently fail
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at internal/sources/serverlessspark/serverlessspark.go:300 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/58f1db4822840fb1. Report an issue: GitHub.