t8y2/dbx · error
service: %w
Error message
service: %w
What it means
This error means the service field of the Hadoop delegation token could not be read as the fourth length-prefixed field. This is the final required field; a failure here indicates a truncated or structurally invalid token even though identifier, password, and kind parsed.
Source
Thrown at agents/drivers/hive-go/config.go:793
return nil, nil, decodeErr
}
reader := strings.NewReader(string(decoded))
identifier, err := readHadoopByteArray(reader)
if err != nil {
return nil, nil, fmt.Errorf("identifier: %w", err)
}
password, err := readHadoopByteArray(reader)
if err != nil {
return nil, nil, fmt.Errorf("password: %w", err)
}
if len(identifier) == 0 || len(password) == 0 {
return nil, nil, errors.New("token identifier and password must be non-empty")
}
if _, err := readHadoopByteArray(reader); err != nil {
return nil, nil, fmt.Errorf("kind: %w", err)
}
if _, err := readHadoopByteArray(reader); err != nil {
return nil, nil, fmt.Errorf("service: %w", err)
}
if reader.Len() != 0 {
return nil, nil, errors.New("token contains trailing data")
}
return identifier, password, nil
}
func readHadoopByteArray(reader io.ByteReader) ([]byte, error) {
length, err := readHadoopVInt(reader)
if err != nil {
return nil, err
}
if length < 0 {
return nil, fmt.Errorf("negative length %d", length)
}
if length > 64*1024*1024 {
return nil, fmt.Errorf("length %d exceeds limit", length)
}View on GitHub (pinned to c0390bff16)
Solutions
- Re-acquire the token from the Hive server and pass it unmodified
- Ensure no transport layer (logs, YAML, base64 re-wrapping) altered the token bytes
- Test the token with decodeHadoopDelegationToken-equivalent parsing before deployment
Defensive patterns
Strategy: try-catch
Try / catch
if err != nil && strings.Contains(err.Error(), "service:") {
return fmt.Errorf("token payload incomplete: %w", err)
} Prevention
- Re-fetch tokens rather than caching copies that may be truncated
- Avoid transforming tokens (re-encoding, wrapping) in transit
- Preflight-decode tokens in CI before rollout
When it happens
Trigger: A delegation token payload ending after the kind field, or a corrupt VInt length prefix at the service field position.
Common situations: Truncated tokens from copy/paste; tokens serialized by a different Hadoop RPC version; corrupted secrets in transit.
Related errors
- token identifier and password must be non-empty
- token contains trailing data
- identifier: %w
- password: %w
- kind: %w
AI-assisted analysis of t8y2/dbx@c0390bff16 (2026-09-05).
Data as JSON: /api/errors/1a7bd17037f6cb18.
Report an issue: GitHub.