{"record":{"id":"bec33f4f26b0515e","repo":"juicedata/juicefs","slug":"get-delegation-token-failed-return-code-d","errorCode":null,"errorMessage":"get delegation token failed, return code %d","messagePattern":"get delegation token failed, return code (.+?)","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"error","filePath":"sdk/java/src/main/java/io/juicefs/JuiceFileSystemImpl.java","lineNumber":2401,"sourceCode":"    return dtEnabled ? buildServiceName() : null;\n  }\n\n  @Override\n  public Token<?> getDelegationToken(String renewer) throws IOException {\n    if (!dtEnabled) {\n      return null;\n    }\n    String owner = ugi.getShortUserName();\n    String realUser = ugi.getRealUser() != null ? ugi.getRealUser().getShortUserName() : null;\n    int tokenSize = 0, r = 8<<10;\n    Pointer tokenBuf = null;\n    while (r > tokenSize) {\n      tokenSize = r;\n      tokenBuf = Memory.allocate(Runtime.getRuntime(lib), tokenSize);\n      r = lib.jfs_get_token(handle, name, tokenBuf, tokenSize, (new HadoopKerberosName(renewer)).getShortName());\n    }\n    if (r < 0) {\n      throw new IOException(String.format(\"get delegation token failed, return code %d\", r));\n    }\n    int id = tokenBuf.getInt(0);\n    long issueDate = TimeUnit.SECONDS.toMillis(tokenBuf.getLongLong(4));\n    long maxDate = TimeUnit.SECONDS.toMillis(tokenBuf.getLongLong(12));\n    int pwdLen = r - 20;\n    byte[] pwd = new byte[pwdLen];\n    tokenBuf.get(20, pwd, 0, pwdLen);\n\n    JuiceFSDelegationTokenIdentifier identifier =\n        new JuiceFSDelegationTokenIdentifier(\n            owner,\n            renewer,\n            realUser);\n    identifier.setIssueDate(issueDate);\n    identifier.setMaxDate(maxDate);\n    identifier.setMasterKeyId(id);\n\n    return new Token<>(","sourceCodeStart":2383,"sourceCodeEnd":2419,"githubUrl":"https://github.com/juicedata/juicefs/blob/c9a67b23e8e08ec23ec331aa6f1675e2319e921c/sdk/java/src/main/java/io/juicefs/JuiceFileSystemImpl.java#L2383-L2419","documentation":"Thrown by getDelegationToken when the native call jfs_get_token returns a negative code, meaning the metadata engine refused or failed to issue a delegation token for the given renewer. The numeric code distinguishes causes such as disabled tokens, Kerberos errors, or backend failures.","triggerScenarios":"Thrown at sdk/java/src/main/java/io/juicefs/JuiceFileSystemImpl.java:2401 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check that delegation tokens are enabled for the volume and the metadata engine supports them","Inspect the returned code (e.g. auth vs. backend errors) in the metadata engine logs"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c9a67b23e8e08ec23ec331aa6f1675e2319e921c","analyzedAt":"2026-09-06T17:55:48.476Z","contentChangedAt":"2026-09-06T17:55:48.476Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}