apache/hadoop · error · IllegalArgumentException

No value for found in conf file.

Error message

No value for {key} found in conf file.

What it means

Utils.notNull(Configuration, key) is the oauth2 module's required-configuration guard: it throws IllegalArgumentException('No value for <key> found in conf file.') when conf.get(key) returns null, naming the exact missing key. It runs inside setConf of the oauth2 AccessTokenProviders, so it fires as soon as a WebHDFS-with-OAuth2 filesystem is initialized, before any request is made. Keys guarded this way include dfs.webhdfs.oauth2.credential, dfs.webhdfs.oauth2.refresh.token, dfs.webhdfs.oauth2.client.id, and dfs.webhdfs.oauth2.refresh.url.

Solutions

  1. Add the property named in the message to the client's configuration (core-site.xml or the Configuration object used to create the FileSystem)
  2. Confirm the file is actually loaded (check -conf stack or conf.get after load) and the name matches byte-for-byte — no trailing spaces
  3. Provide all keys the chosen provider requires: credential provider needs dfs.webhdfs.oauth2.credential + client.id + refresh.url; refresh-token provider additionally needs dfs.webhdfs.oauth2.refresh.token
  4. Fail fast in your own bootstrap by asserting required keys before FileSystem.get()

Example fix

<!-- before: provider set, credential missing -->
<property>
  <name>dfs.webhdfs.oauth2.access.token.provider</name>
  <value>org.apache.hadoop.hdfs.web.oauth2.ConfCredentialBasedAccessTokenProvider</value>
</property>
<!-- after: add the key named in the message -->
<property>
  <name>dfs.webhdfs.oauth2.credential</name>
  <value>my-client-secret</value>
</property>
Defensive patterns

Strategy: validation

Validate before calling

static final String[] OAUTH2_REQUIRED = {
    "dfs.webhdfs.oauth2.client.id",
    "dfs.webhdfs.oauth2.refresh.url"
    // plus provider-specific: dfs.webhdfs.oauth2.credential
    // or dfs.webhdfs.oauth2.refresh.token
};
for (String k : OAUTH2_REQUIRED) {
  if (conf.get(k) == null) {
    throw new IllegalStateException("Missing required OAuth2 config: " + k);
  }
}

Prevention

When it happens

Trigger: Initializing WebHdfsFileSystem with dfs.webhdfs.oauth2.access.token.provider set to ConfCredentialBasedAccessTokenProvider / ConfRefreshTokenBasedAccessTokenProvider / CredentialBasedAccessTokenProvider while any of their required keys (named in the message) is absent from the client Configuration.

Common situations: Enabling OAuth2 for S3A-style WebHDFS deployments but only configuring the provider class; putting oauth2 keys in hdfs-site.xml while the client only loads core-site.xml; XML typo in the property name; keys set on the gateway but missing on client machines.

Related errors


AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22). Data as JSON: /api/errors/d3aff03ef0dc1722. Report an issue: GitHub.

Appendix: source

Thrown at hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/oauth2/Utils.java:37

package org.apache.hadoop.hdfs.web.oauth2;

import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.classification.InterfaceStability;
import org.apache.hadoop.conf.Configuration;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

@InterfaceAudience.Private
@InterfaceStability.Evolving
final class Utils {
  private Utils() { /* Private constructor */ }

  public static String notNull(Configuration conf, String key) {
    String value = conf.get(key);

    if(value == null) {
      throw new IllegalArgumentException("No value for " + key +
          " found in conf file.");
    }

    return value;
  }

  public static String postBody(String ... kv)
      throws UnsupportedEncodingException {
    if(kv.length % 2 != 0) {
      throw new IllegalArgumentException("Arguments must be key value pairs");
    }
    StringBuilder sb = new StringBuilder();
    int i = 0;

    while(i < kv.length) {
      if(i > 0) {
        sb.append("&");
      }

View on GitHub (pinned to 2add963021)