hasura/graphql-engine · error
reading metadata from response: %w
Error message
reading metadata from response: %w
What it means
After ExportMetadata succeeds, the CLI reads the full response body with io.ReadAll. This error means reading that response stream failed mid-transfer — the connection dropped, the server closed the stream early, or the reader returned an I/O error. Distinct from error 365, which is the API call itself failing.
Source
Thrown at cli/pkg/metadata/mode_handlers.go:288
return nil, errors.E(op, fmt.Errorf("encoding json response from server: %w", err))
}
return b, nil
}
func export(p *ProjectMetadata, mode cli.MetadataMode) (io.Reader, error) {
var op errors.Op = "metadata.export"
metadata, err := p.ec.APIClient.V1Metadata.ExportMetadata()
if err != nil {
return nil, errors.E(op, fmt.Errorf("exporting metadata from server: %w", err))
}
var metadataBytes []byte
metadataBytes, err = io.ReadAll(metadata)
if err != nil {
return nil, errors.E(op, fmt.Errorf("reading metadata from response: %w", err))
}
if mode == cli.MetadataModeYAML {
metadataBytes, err = metadatautil.JSONToYAML(metadataBytes)
if err != nil {
return nil, errors.E(op, fmt.Errorf("parsing metadata to yaml: %w", err))
}
}
return bytes.NewReader(metadataBytes), nil
}
View on GitHub (pinned to 724551b9ae)
Solutions
- Retry the export — transient stream failures usually succeed on a second attempt
- Increase proxy/load-balancer response timeouts for the Hasura endpoint if metadata is large
- Check server logs for restarts/OOMs that abort responses mid-stream
- Reduce metadata size (remove unused tracked tables/remote schemas) if payloads are consistently truncated
Defensive patterns
Strategy: retry
Try / catch
var r io.Reader
for attempt := 0; attempt < 3; attempt++ {
var err error
r, err = pm.Export(ctx, mode)
if err == nil || !strings.Contains(err.Error(), "reading metadata from response") {
break
}
time.Sleep(time.Duration(attempt+1) * time.Second)
} Prevention
- Raise proxy/LB response timeouts for large metadata payloads
- Retry transient stream failures before escalating
- Monitor server stability during bulk metadata operations
When it happens
Trigger: Calling Export when the HTTP response body is interrupted: server closing the connection partway, proxy/load-balancer idle timeouts on large metadata payloads, or network disruption during streaming of the response body.
Common situations: Large metadata payloads truncated by an nginx/ALB timeout; flaky connections from CI; HTTP/2 stream resets between client and server; keep-alive connections killed by intermediaries.
Related errors
- cannot export metadata from server: %w
- exporting metadata from server: %w
- pulling latest actions codegen files from internet failed: %
- unable to fetch introspection schema: %w
- error getting actions file content: %w
AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28).
Data as JSON: /api/errors/6e31f19a00e3495c.
Report an issue: GitHub.