juicedata/juicefs · error · IOException

get delegation token failed, return code %d

Error message

get delegation token failed, return code %d

What it means

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.

Source

Thrown at sdk/java/src/main/java/io/juicefs/JuiceFileSystemImpl.java:2401

    return dtEnabled ? buildServiceName() : null;
  }

  @Override
  public Token<?> getDelegationToken(String renewer) throws IOException {
    if (!dtEnabled) {
      return null;
    }
    String owner = ugi.getShortUserName();
    String realUser = ugi.getRealUser() != null ? ugi.getRealUser().getShortUserName() : null;
    int tokenSize = 0, r = 8<<10;
    Pointer tokenBuf = null;
    while (r > tokenSize) {
      tokenSize = r;
      tokenBuf = Memory.allocate(Runtime.getRuntime(lib), tokenSize);
      r = lib.jfs_get_token(handle, name, tokenBuf, tokenSize, (new HadoopKerberosName(renewer)).getShortName());
    }
    if (r < 0) {
      throw new IOException(String.format("get delegation token failed, return code %d", r));
    }
    int id = tokenBuf.getInt(0);
    long issueDate = TimeUnit.SECONDS.toMillis(tokenBuf.getLongLong(4));
    long maxDate = TimeUnit.SECONDS.toMillis(tokenBuf.getLongLong(12));
    int pwdLen = r - 20;
    byte[] pwd = new byte[pwdLen];
    tokenBuf.get(20, pwd, 0, pwdLen);

    JuiceFSDelegationTokenIdentifier identifier =
        new JuiceFSDelegationTokenIdentifier(
            owner,
            renewer,
            realUser);
    identifier.setIssueDate(issueDate);
    identifier.setMaxDate(maxDate);
    identifier.setMasterKeyId(id);

    return new Token<>(

View on GitHub (pinned to c9a67b23e8)

Solutions

  1. Check that delegation tokens are enabled for the volume and the metadata engine supports them
  2. Inspect the returned code (e.g. auth vs. backend errors) in the metadata engine logs
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at sdk/java/src/main/java/io/juicefs/JuiceFileSystemImpl.java:2401 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of juicedata/juicefs@c9a67b23e8 (2026-09-06). Data as JSON: /api/errors/bec33f4f26b0515e. Report an issue: GitHub.