t8y2/dbx · error
Unsupported createMode: %s
Error message
Unsupported createMode: %s
What it means
createFlags maps a createMode string to ZooKeeper node flags (ephemeral/sequential bits). Any mode string beyond the four known combinations (persistent, ephemeral, persistent_sequential, ephemeral_sequential) results in this error, so createNode refuses to guess node semantics.
Source
Thrown at agents/drivers/zookeeper/operations.go:181
}
result := putResult(stat)
result["key"] = createdPath
result["createdKey"] = createdPath
return result, nil
}
func createFlags(mode string) (int32, error) {
switch mode {
case "", "persistent":
return 0, nil
case "ephemeral":
return zk.FlagEphemeral, nil
case "persistent_sequential":
return zk.FlagSequence, nil
case "ephemeral_sequential":
return zk.FlagEphemeral | zk.FlagSequence, nil
default:
return 0, fmt.Errorf("Unsupported createMode: %s", mode)
}
}
func createParents(client znodeClient, parent string) error {
if parent == "/" {
return nil
}
current := ""
for _, segment := range strings.Split(strings.Trim(parent, "/"), "/") {
current = childPath(current, segment)
exists, _, err := client.Exists(current)
if err != nil {
return err
}
if exists {
continue
}
if _, err := client.Create(current, nil, 0); err != nil && err != zk.ErrNodeExists {View on GitHub (pinned to c0390bff16)
Solutions
- Use one of: "persistent", "ephemeral", "persistent_sequential", "ephemeral_sequential".
- Normalize user input to lowercase and replace hyphens with underscores before passing it in.
- Add a whitelist validation in the caller/UI so invalid modes never reach createNode.
- Check the switch in createFlags (operations.go:181) for the authoritative list.
Example fix
// before
createFlags("ephemeral-sequential") // hyphen rejected
// after
createFlags("ephemeral_sequential") Defensive patterns
Strategy: validation
Validate before calling
var validCreateModes = map[string]bool{
"persistent": true,
"ephemeral": true,
"persistent_sequential": true,
"ephemeral_sequential": true,
}
func validCreateMode(m string) bool { return validCreateModes[strings.ToLower(strings.ReplaceAll(m, "-", "_"))] } Try / catch
flags, err := createFlags(mode)
if err != nil {
if strings.HasPrefix(err.Error(), "Unsupported createMode:") {
return nil, fmt.Errorf("createMode %q rejected; use persistent|ephemeral|persistent_sequential|ephemeral_sequential", mode)
}
return nil, err
} Prevention
- Normalize user input: lowercase, replace hyphens with underscores.
- Expose only the four valid modes in UIs/CLI flags.
- Centralize createMode values as constants shared by callers and tests.
When it happens
Trigger: Calling createNode (or the create RPC path) with a createMode like "ephemeral-sequential" (hyphen), "seq", or any unrecognized token — casing and spelling must match exactly.
Common situations: User-supplied mode strings from config or CLI flags, drivers/tools from other ecosystems using different naming conventions (e.g. PERSISTENT_SEQUENTIAL uppercase), or typos in test fixtures.
Related errors
- Root znode cannot be modified
- Root znode cannot be deleted
- ZooKeeper server list is empty
- ZooKeeper auth scheme and credentials must be configured tog
- Unsupported auth_scheme %q; expected %q or %q
AI-assisted analysis of t8y2/dbx@c0390bff16 (2026-09-05).
Data as JSON: /api/errors/f1cbb629cf7ffd43.
Report an issue: GitHub.