{"record":{"id":"1cc5cc76e8f9f2a5","repo":"apache/hadoop","slug":"request-from-zk-failover-controller-at-denied-s","errorCode":null,"errorMessage":"Request from ZK failover controller at {} denied since the namenode is in Observer state.","messagePattern":"Request from ZK failover controller at (.+?) denied since the namenode is in Observer state\\.","errorType":"exception","errorClass":"AccessControlException","httpStatus":null,"severity":"error","filePath":"hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNodeRpcServer.java","lineNumber":1869,"sourceCode":"  public synchronized void transitionToActive(StateChangeRequestInfo req) \n      throws ServiceFailedException, AccessControlException, IOException {\n    checkNNStartup();\n    nn.checkHaStateChange(req);\n    nn.transitionToActive();\n  }\n\n  @Override // HAServiceProtocol\n  public synchronized void transitionToStandby(StateChangeRequestInfo req)\n      throws ServiceFailedException, AccessControlException, IOException {\n    checkNNStartup();\n    // This is to eliminate any race condition between manual transition of\n    // namenode into Observer, and ZKFC auto failover election, when the\n    // namenode has already participated in the\n    // ZKFC election, before transition to Observer state as Standby Node.\n    // For more details check : HDFS-14961.\n    if (nn.getState().equals(NameNode.OBSERVER_STATE.toString())\n        && req.getSource() == RequestSource.REQUEST_BY_ZKFC) {\n      throw new AccessControlException(\n          \"Request from ZK failover controller at \" + Server.getRemoteAddress()\n              + \" denied since the namenode is in Observer state.\");\n    }\n    nn.checkHaStateChange(req);\n    nn.transitionToStandby();\n  }\n\n  @Override // HAServiceProtocol\n  public synchronized void transitionToObserver(StateChangeRequestInfo req)\n      throws ServiceFailedException, AccessControlException, IOException {\n    checkNNStartup();\n    nn.checkHaStateChange(req);\n    nn.transitionToObserver();\n  }\n\n  @Override // HAServiceProtocol\n  public synchronized HAServiceStatus getServiceStatus() \n      throws AccessControlException, ServiceFailedException, IOException {","sourceCodeStart":1851,"sourceCodeEnd":1887,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNodeRpcServer.java#L1851-L1887","documentation":"Error \"Request from ZK failover controller at {} denied since the namenode is in Observer state.\" thrown in apache/hadoop.","triggerScenarios":"The ZooKeeper failover controller sends a request to a NameNode running in Observer state.","commonSituations":"ZKFC misconfiguration targeting an observer node, or a failover storm hitting all nodes.","solutions":["Direct ZKFC fencing/transition requests to the active or standby NameNode, not the observer; observers cannot service HA transitions."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2add9630210752f88ceb1bb74eb65e37bf41da8e","analyzedAt":"2026-08-22T19:55:07.957Z","schemaVersion":2},"datasetVersion":"2026-08-22T20:17:22.307Z"}