apache/hadoop · error · ReconfigurationException

Could not change property ${property} from '${oldVal}' to '$

Error message

Could not change property ${property} from '${oldVal}' to '${newVal}'

What it means

ReconfigurableBase.reconfigureProperty() only applies properties the service whitelisted: isPropertyReconfigurable() (backed by getReconfigurableProperties()) must return true. Any other property takes the else branch and throws ReconfigurationException, whose message is built by constructMessage() as "Could not change property X from 'old' to 'new'" (parts omitted when values are null). Service subclasses can also raise it from reconfigurePropertyImpl() when applying the new value fails.

Source

Thrown at hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/ReconfigurableBase.java:238

   * This method cannot be overridden, subclasses should instead override
   * reconfigurePropertyImpl.
   */
  @Override
  public final void reconfigureProperty(String property, String newVal)
    throws ReconfigurationException {
    if (isPropertyReconfigurable(property)) {
      LOG.info("changing property " + property + " to " + newVal);
      synchronized(getConf()) {
        getConf().get(property);
        String effectiveValue = reconfigurePropertyImpl(property, newVal);
        if (newVal != null) {
          getConf().set(property, effectiveValue);
        } else {
          getConf().unset(property);
        }
      }
    } else {
      throw new ReconfigurationException(property, newVal,
                                             getConf().get(property));
    }
  }

  /**
   * {@inheritDoc}
   *
   * Subclasses must override this.
   */
  @Override 
  public abstract Collection<String> getReconfigurableProperties();


  /**
   * {@inheritDoc}
   *
   * Subclasses may wish to override this with a more efficient implementation.
   */

View on GitHub (pinned to 2add963021)

Solutions

  1. Check svc.isPropertyReconfigurable(name) (or inspect getReconfigurableProperties()) before requesting the change and log/skip otherwise
  2. Fix the property-name typo so it matches the exact whitelisted key
  3. If the property is restart-only, apply the new value and restart the service instead of hot-reloading
  4. If you own the service subclass, add the key to getReconfigurableProperties() and implement a safe reconfigurePropertyImpl()

Example fix

// before
svc.reconfigureProperty("dfs.datanode.max.transfer.threads", "8192");
// throws ReconfigurationException if not whitelisted

// after
String prop = "dfs.datanode.max.transfer.threads";
if (svc.isPropertyReconfigurable(prop)) {
  svc.reconfigureProperty(prop, "8192");
} else {
  LOG.warn("{} is not hot-reconfigurable; restart required", prop);
}
Defensive patterns

Strategy: validation

Validate before calling

if (svc.isPropertyReconfigurable(propName)) {
  svc.reconfigureProperty(propName, newVal);
} else {
  LOG.warn("{} is restart-only; schedule a service restart", propName);
}

Try / catch

try {
  svc.reconfigureProperty(prop, newVal);
} catch (ReconfigurationException e) {
  // e.getProperty()/getNewValue()/getOldValue() identify the failing change
  LOG.warn("Hot-reload rejected for {} (old={}, new={}); restart required",
      e.getProperty(), e.getOldValue(), e.getNewValue());
}

Prevention

When it happens

Trigger: Calling reconfigureProperty(name, value) for a key not present in the service's getReconfigurableProperties() collection; attempting to unset (newVal null) a non-reconfigurable property; a subclass's reconfigurePropertyImpl rejecting the new value at apply time.

Common situations: Trying to hot-reload a restart-only setting (ports, hostnames, handler counts not on the whitelist); typo'd property name so it never matches the whitelist; assuming a key is reloadable merely because it exists in the XML config of a running daemon.

Related errors


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