{"record":{"id":"a876d00fefa698a7","repo":"t8y2/dbx","slug":"custom-java-kerberos-server-name-resolver-is-not-s","errorCode":null,"errorMessage":"custom Java Kerberos server-name-resolver is not supported; use dbx.cassandra.kerberos.server-name","messagePattern":"custom Java Kerberos server-name-resolver is not supported; use dbx\\.cassandra\\.kerberos\\.server-name","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"agents/drivers/cassandra-go/config_file.go","lineNumber":217,"sourceCode":"\t\tif value, ok, err := hoconString(parsed, path); err != nil {\n\t\t\treturn err\n\t\t} else if ok {\n\t\t\tconfig.kerberos.serviceName = value\n\t\t}\n\t}\n\tif value, ok, err := hoconStringMap(parsed, prefix+\"sasl-properties\"); err != nil {\n\t\treturn err\n\t} else if ok {\n\t\tfor key, property := range value {\n\t\t\tif strings.EqualFold(key, \"javax.security.sasl.qop\") {\n\t\t\t\tconfig.kerberos.qop = property\n\t\t\t}\n\t\t}\n\t}\n\tif value, ok, err := hoconString(parsed, prefix+\"server-name-resolver\"); err != nil {\n\t\treturn err\n\t} else if ok && value != \"\" {\n\t\treturn fmt.Errorf(\"custom Java Kerberos server-name-resolver is not supported; use dbx.cassandra.kerberos.server-name\")\n\t}\n\tloginPrefix := prefix + \"login-configuration.\"\n\tif value, ok, err := hoconString(parsed, loginPrefix+\"principal\"); err != nil {\n\t\treturn err\n\t} else if ok {\n\t\tconfig.kerberos.principal = value\n\t}\n\tif value, ok, err := firstHOCONString(parsed, loginPrefix+\"keyTab\", loginPrefix+\"keytab\"); err != nil {\n\t\treturn err\n\t} else if ok {\n\t\tconfig.kerberos.keytabPath = value\n\t}\n\tif value, ok, err := firstHOCONString(parsed, loginPrefix+\"ticketCache\", loginPrefix+\"ticket-cache\"); err != nil {\n\t\treturn err\n\t} else if ok {\n\t\tconfig.kerberos.ccachePath = value\n\t}\n\tif value, ok, err := firstHOCONBool(parsed, loginPrefix+\"useKeyTab\", loginPrefix+\"use-keytab\"); err != nil {","sourceCodeStart":199,"sourceCodeEnd":235,"githubUrl":"https://github.com/t8y2/dbx/blob/c0390bff16418b651f4728520d99adf8ce48829a/agents/drivers/cassandra-go/config_file.go#L199-L235","documentation":"The Java driver allows pluggable Kerberos NameRules via `advanced.auth-provider.kerberos.server-name-resolver`. applyHOCONAuthentication (config_file.go:217) rejects any non-empty value for this key because the Go driver has no equivalent; Kerberos service/server naming must instead be configured with the library's native `dbx.cassandra.kerberos.server-name` option.","triggerScenarios":"A HOCON file contains `datastax-java-driver.advanced.auth-provider.kerberos.server-name-resolver` set to a resolver class or non-empty value (e.g. `DnsNameResolver`) while Kerberos auth is configured through the Java-driver section.","commonSituations":"Migrating a DSE Java driver 1.x config that relied on a custom server-name-resolver for cross-realm or DNS-based principal mapping; environments where the server name differs from the host name and the Java resolver handled the translation.","solutions":["Remove the `kerberos.server-name-resolver` key from the HOCON file.","Set the native option `dbx.cassandra.kerberos.server-name` to the Kerberos service principal name portion (e.g. 'cassandra' or host-specific name) the Java resolver used to produce.","If DNS translation was involved, resolve the name yourself and hard-code the correct server-name in the native config.","Verify the resulting principal with kinit/klist or a test connection to the cluster."],"exampleFix":"// before (application.conf)\ndatastax-java-driver {\n  advanced.auth-provider.kerberos.server-name-resolver = com.datastax.driver.core.kerberos.DnsNameResolver\n}\n// after (remove key, set native option)\n# HOCON: key removed\ndbx.cassandra.kerberos.server-name = cassandra","handlingStrategy":"validation","validationCode":"func validateNoKerberosNameResolver(cfg *hocon.Config) error {\n    const key = \"datastax-java-driver.advanced.auth-provider.kerberos.server-name-resolver\"\n    if cfg.Get(key) == nil {\n        return nil\n    }\n    if v := strings.TrimSpace(cfg.GetString(key)); v != \"\" {\n        return fmt.Errorf(\"%s is unsupported; use dbx.cassandra.kerberos.server-name\", key)\n    }\n    return nil\n}","typeGuard":null,"tryCatchPattern":"if err := applyCassandraConfigFile(cfgPath); err != nil {\n    if strings.Contains(err.Error(), \"server-name-resolver is not supported\") {\n        log.Fatalf(\"remove kerberos.server-name-resolver and set dbx.cassandra.kerberos.server-name instead\")\n    }\n    return err\n}","preventionTips":["Never carry Java-driver Kerberos resolver settings into configs used by Go clients.","Express Kerberos service naming with dbx.cassandra.kerberos.server-name explicitly.","When migrating DSE 1.x configs, strip pluggable-resolver keys and translate their effect manually."],"tags":["cassandra","kerberos","hocon","unsupported-feature"],"backgroundTag":"unsupported-config-option","analyzedSha":"c0390bff16418b651f4728520d99adf8ce48829a","analyzedAt":"2026-09-05T23:05:10.900Z","contentChangedAt":"2026-09-05T23:05:10.900Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}