hasura/graphql-engine · warning
encoding json response from server: %w
Error message
encoding json response from server: %w
What it means
After a successful metadata replace on the server, the metadata apply handler encodes the replaceMetadataResponse into JSON for display; if json.Encoder fails you get 'encoding json response from server'. Only fails if the response contains values Go's encoding/json cannot serialize (NaN/Inf, unsupported map key types, circular refs).
Source
Thrown at cli/pkg/metadata/mode_handlers.go:59
metadataHandler := projectmetadata.NewHandlerFromEC(p.ec)
if p.ec.Config.Version == cli.V2 {
r, err := metadataHandler.V1ApplyMetadata()
if err != nil {
return nil, errors.E(op, err)
}
return r, nil
}
if p.ec.Config.Version >= cli.V3 {
replaceMetadataResponse, err := metadataHandler.V2ApplyMetadata(false)
if err != nil {
return nil, errors.E(op, err)
}
b := new(bytes.Buffer)
if err := json.NewEncoder(b).Encode(replaceMetadataResponse); err != nil {
return nil, errors.E(op, fmt.Errorf("encoding json response from server: %w", err))
}
return b, nil
}
return nil, nil
}
func (m *metadataModeDirectoryHandler) Parse(p *ProjectMetadata) (io.Reader, error) {
var op errors.Op = "metadata.metadataModeDirectoryHandler.Parse"
metadataHandler := projectmetadata.NewHandlerFromEC(p.ec)
jsonMetadata, err := metadataHandler.BuildJSONMetadata()
if err != nil {
return nil, errors.E(op, fmt.Errorf("parsing project metadata to json failed: %w", err))
}
View on GitHub (pinned to 724551b9ae)
Solutions
- Inspect the raw server response (curl the /v1/metadata endpoint with the same request)
- Check for a proxy/gateway between CLI and server altering responses
- Align CLI and server versions so response shapes match
- Report the offending response payload as a bug if it comes from Hasura itself
Defensive patterns
Strategy: try-catch
Try / catch
if b, err := handler.Apply(&p); err != nil {
if strings.Contains(err.Error(), "encoding json response") {
// dump raw server response and check proxies/version skew
}
} Prevention
- Bypass mutating proxies between CLI and server
- Match CLI major version to server version
- Log raw /v1/metadata responses when debugging
When it happens
Trigger: Calling metadata Apply (e.g. `hasura metadata apply`) when the server's replace-metadata response includes a value that breaks JSON encoding — rare, and usually a sign of an unexpected/proxied response body (e.g. gateway returning HTML that got typed loosely).
Common situations: A proxy or middleware mangling the Hasura server response; server versions returning exotic fields; effectively unreachable in normal operation with a genuine Hasura server.
Related errors
- error fetching config from server: %w
- error fetching server config: %v
- cannot write metadata directory: %w
- cannot create metadata files: %w
- got error while getting the sources list : %w
AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28).
Data as JSON: /api/errors/4050ab083a9cef85.
Report an issue: GitHub.