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
- Retry the GetBatch call for a fresh proto message
- Check for unsupported proto fields (unknown types, non-UTF8 strings)
- 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.