{"record":{"id":"cd7a2c677a092fcd","repo":"apache/hadoop","slug":"could-not-change-property-property-from-oldval-cd7a2c","errorCode":null,"errorMessage":"Could not change property {property} from '{oldVal}' to '{newVal}'","messagePattern":"Could not change property (.+?) from '(.+?)' to '(.+?)'","errorType":"exception","errorClass":"ReconfigurationException","httpStatus":null,"severity":"error","filePath":"hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java","lineNumber":2398,"sourceCode":"    } else if (property.equals(DFS_BLOCK_INVALIDATE_LIMIT_KEY)) {\n      return reconfigureBlockInvalidateLimit(datanodeManager, property, newVal);\n    } else if (property.equals(DFS_NAMENODE_DECOMMISSION_BACKOFF_MONITOR_PENDING_LIMIT) ||\n        (property.equals(DFS_NAMENODE_DECOMMISSION_BACKOFF_MONITOR_PENDING_BLOCKS_PER_LOCK))) {\n      return reconfigureDecommissionBackoffMonitorParameters(datanodeManager, property,\n          newVal);\n    } else if (property.equals(DFS_NAMENODE_BLOCKPLACEMENTPOLICY_MIN_BLOCKS_FOR_WRITE_KEY)) {\n      return reconfigureMinBlocksForWrite(property, newVal);\n    } else if (property.equals(IPC_SERVER_LOG_SLOW_RPC) ||\n        (property.equals(IPC_SERVER_LOG_SLOW_RPC_THRESHOLD_MS_KEY))) {\n      return reconfigureLogSlowRPC(property, newVal);\n    } else if (property.equals(DFS_NAMENODE_LOCK_DETAILED_METRICS_KEY)\n        || property.equals(DFS_NAMENODE_READ_LOCK_REPORTING_THRESHOLD_MS_KEY)\n        || property.equals(DFS_NAMENODE_WRITE_LOCK_REPORTING_THRESHOLD_MS_KEY)) {\n      return reconfigureFSNamesystemLockMetricsParameters(property, newVal);\n    } else if (property.equals(DFS_NAMENODE_MAX_DIRECTORY_ITEMS_KEY)) {\n      return reconfigureMaxDirItems(newVal);\n    } else {\n      throw new ReconfigurationException(property, newVal, getConf().get(\n          property));\n    }\n  }\n\n  private String reconfReplicationParameters(final String newVal,\n      final String property) throws ReconfigurationException {\n    BlockManager bm = namesystem.getBlockManager();\n    int newSetting;\n    namesystem.writeLock(RwLockMode.BM);\n    try {\n      if (property.equals(DFS_NAMENODE_REPLICATION_MAX_STREAMS_KEY)) {\n        bm.setMaxReplicationStreams(\n            adjustNewVal(DFS_NAMENODE_REPLICATION_MAX_STREAMS_DEFAULT, newVal));\n        newSetting = bm.getMaxReplicationStreams();\n      } else if (property.equals(\n          DFS_NAMENODE_REPLICATION_STREAMS_HARD_LIMIT_KEY)) {\n        bm.setReplicationStreamsHardLimit(\n            adjustNewVal(DFS_NAMENODE_REPLICATION_STREAMS_HARD_LIMIT_DEFAULT,","sourceCodeStart":2380,"sourceCodeEnd":2416,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java#L2380-L2416","documentation":"NameNode.reconfigurePropertyImpl chains property.equals() checks over every runtime-reconfigurable key; the final else throws ReconfigurationException(property, newVal, getConf().get(property)), reporting the old effective value and the rejected new value. It fires when a property reached this dispatcher but matched no handler branch. That means the key as sent does not match what this NameNode build handles - a spelling or version-skew problem, not a bad value (bad values fail earlier, inside each handler).","triggerScenarios":"`hdfs dfsadmin -reconfig namenode <addr> -set <key>=<value>` where <key> is misspelled or is a reconfigurable key of a different Hadoop version than the running NameNode; also a programmatic ReconfigurableBase.reconfigureProperty call with an unsupported key.","commonSituations":"Typos in the property name in ops scripts; using a key added in a newer release against an older NameNode; mixed-version clusters mid rolling upgrade where the client's key list is newer than the NN's.","solutions":["Run `hdfs dfsadmin -reconfig namenode <addr> -properties` and copy the key name exactly from the supported list","Verify the key exists in the documentation for the exact deployed version (`hadoop version`)","If the key is not runtime-reconfigurable on this build, set it in hdfs-site.xml and restart the NameNode","During rolling upgrades, finish the upgrade so client and NameNode versions match before reconfiguring newly added keys"],"exampleFix":"# before - typo'd key falls through to the else branch\nhdfs dfsadmin -reconfig namenode nn1:8020 -set dfs.namenode.heartbeat.recheck=300000\n\n# after - exact key from `dfsadmin -reconfig ... -properties`\nhdfs dfsadmin -reconfig namenode nn1:8020 -set dfs.namenode.heartbeat.recheck-interval=300000","handlingStrategy":"try-catch","validationCode":"# Only reconfig keys the NN itself declares\nKEY=dfs.namenode.heartbeat.recheck-interval\nif ! hdfs dfsadmin -reconfig namenode nn1:8020 -properties | grep -qx \"$KEY\"; then\n  echo \"$KEY not runtime-reconfigurable on this NN\"; exit 1\nfi\nhdfs dfsadmin -reconfig namenode nn1:8020 -set \"$KEY=300000\"","typeGuard":"// Java: gate keys against the server's own declared list before calling\nboolean reconfigurable = supportedProperties.contains(key);","tryCatchPattern":"catch (ReconfigurationException e) {\n  log.warn(\"NN rejected reconfig of {} from [{}] to [{}]: {}\",\n      e.getProperty(), e.getOldValue(), e.getNewValue(), e.getCause());\n  // fall back to: set in hdfs-site.xml + rolling restart of the NameNode\n}","preventionTips":["Always pull key names from `dfsadmin -reconfig -properties` output rather than docs or memory","Pin reconfig automation to the cluster's exact Hadoop version","Unit-test reconfig scripts against a minicluster of the same version"],"tags":["hdfs","name-node","reconfig","configuration","dfsadmin","version-skew"],"backgroundTag":"runtime-reconfig-rejected","analyzedSha":"2add9630210752f88ceb1bb74eb65e37bf41da8e","analyzedAt":"2026-08-22T19:55:07.957Z","schemaVersion":2},"datasetVersion":"2026-08-23T01:17:44.959Z"}