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, nilView on GitHub (pinned to 8cc6e09de2)
Solutions
- Retry the operation on transient data
- Inspect the JSON payload in logs for invalid structures
- 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.