apache/seatunnel · error · IllegalArgumentException

The value of${key} is required

Error message

The value of${key} is required

What it means

PaimonCatalogLoader.checkConfiguration iterates the Paimon Configuration and, when it finds the requested key but its value is blank (null/empty/whitespace), throws IllegalArgumentException "The value of<key> is required" (note the missing space, a literal string concatenation). It validates that a present-but-blank config entry is rejected.

Source

Thrown at seatunnel-connectors-v2/connector-paimon/src/main/java/org/apache/seatunnel/connectors/seatunnel/paimon/catalog/PaimonCatalogLoader.java:131

                    && StringUtils.isBlank(user)
                    && StringUtils.isBlank(password)) {
                throw new IllegalArgumentException(
                        "paimon privilege is enabled, user and password is required");
            }
            return catalog;
        } catch (Exception e) {
            throw new PaimonConnectorException(
                    PaimonConnectorErrorCode.LOAD_CATALOG, e.getMessage(), e);
        }
    }

    void checkConfiguration(Configuration configuration, String key) {
        Iterator<Map.Entry<String, String>> entryIterator = configuration.iterator();
        while (entryIterator.hasNext()) {
            Map.Entry<String, String> entry = entryIterator.next();
            if (entry.getKey().equals(key)) {
                if (StringUtils.isBlank(entry.getValue())) {
                    throw new IllegalArgumentException("The value of" + key + " is required");
                }
                return;
            }
        }
        throw new IllegalArgumentException(key + " is required");
    }
}

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Open the Paimon configuration (paimon-conf-dir files) and set a non-blank value for the reported key.
  2. Fix environment-variable/templating substitution so the value resolves to real content.
  3. Remove the empty key entirely if it is optional, so checkConfiguration's required-key branch (or absence handling) applies appropriately.
  4. Trim whitespace when generating the config programmatically.

Example fix

// before (paimon conf)
security.kerberos.keytab = 
// after
security.kerberos.keytab = /etc/security/keytabs/etl.keytab
Defensive patterns

Strategy: validation

Validate before calling

String val = configuration.getString(key, null);
if (val == null || val.trim().isEmpty()) {
    throw new ConfigValidationException(key + " must be set to a non-blank value");
}

Try / catch

try {
    loader.loadCatalog();
} catch (IllegalArgumentException e) {
    if (e.getMessage().startsWith("The value of")) {
        String key = e.getMessage().substring("The value of".length()).replace(" is required", "").trim();
        LOG.error("set a non-blank value for {} in paimon conf", key);
    }
    throw e;
}

Prevention

When it happens

Trigger: loadCatalog -> checkConfiguration(configuration, key) where the Paimon Configuration contains the key (e.g. a security/kerberos or metastore property) but the value is empty or whitespace, e.g. `security.kerberos.keytab = ` in paimon-conf.

Common situations: Template config files left with empty values; environment-variable substitution in paimon conf resolving to empty string; trailing whitespace-only values; a required property defined but never filled in during deployment.

Understand the failure class

Background: "must not be empty", "cannot be empty" — required-field validation errors across open-source libraries — this error's family across 41 libraries.

Related errors


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/f8d0db8fa4d9fda1. Report an issue: GitHub.