zhangdong1015 opened a new issue, #61536:
URL: https://github.com/apache/doris/issues/61536

   ### Search before asking
   
   - [x] I had searched in the 
[issues](https://github.com/apache/doris/issues?q=is%3Aissue) and found no 
similar issues.
   
   
   ### Version
   
   Doris 4.0.3, 4.0.4-slim
   
   ### What's Wrong?
   
     In Doris cloud mode, when deploying FE cluster using Docker host network 
where each FE node uses a
     different http_port, Observer nodes fail to join the cluster.
   
     Error log:
     WARN [Env.getFeNodeTypeAndNameFromHelpers():1520] failed to get fe node 
type from helper node:
     HostInfo{host='127.0.0.1', port=9010}.
     java.net.ConnectException: Connection refused
     WARN [Env.getClusterIdAndRole():1342] current node 
HostInfo{host='127.0.0.1', port=9011} is not added to
     the group. please add it first.
   
     Root cause:
   
     In Env.getFeNodeTypeAndNameFromHelpers() method:
     String url = "http://"; + NetUtils.getHostPortInAccessibleFormat(
         helperNode.getHost(),    // "127.0.0.1" (correct)
         Config.http_port         // Uses current node's http_port, NOT 
helper's!
     ) + "/role?host=...";
   
     The code uses Config.http_port (current node's port) instead of the helper 
node's http_port. This assumes
     all FE nodes use the same http_port, which fails when:
     - Using Docker host network mode (containers share host network, must use 
different ports)
   
     ---
     What You Expected
   
     FE-2 (Observer) should connect to FE-1's HTTP endpoint at port 8030 and 
join the cluster successfully.
   
     The code should use the helper node's http_port when constructing the HTTP 
URL, not the current node's
     Config.http_port.
   
   ### What You Expected?
   
   1. FE-2 should successfully connect to FE-1's HTTP endpoint and join the 
cluster as an Observer node.
     2. The code should use the helper node's http_port when constructing the 
HTTP URL, not the current node's
     Config.http_port.
   
     Current behavior (wrong):
     FE-2 tries: http://127.0.0.1:8031/role  (FE-2's own http_port, no service)
     Should be:  http://127.0.0.1:8030/role  (FE-1's http_port, correct)
   
     Suggested fix:
     - Store http_port in Meta Service when registering FE nodes
     - Or provide a way to specify helper node's http_port in the --helper 
parameter (e.g., --helper
     host:http_port:edit_log_port)
   
   ### How to Reproduce?
   
     1. Deploy Doris cloud mode with Meta Service + FoundationDB
     2. Configure FE-1 (Master) with http_port=8030, edit_log_port=9010
     3. Configure FE-2 (Observer) with http_port=8031, edit_log_port=9011
     4. Start FE-1 successfully
     5. Start FE-2 with --helper 127.0.0.1:9010
     6. FE-2 fails to join with "Connection refused" error
   
     Configuration example:
   
     ┌──────┬──────────┬───────────────┬───────────┐
     │ Node │   Role   │ edit_log_port │ http_port │
     ├──────┼──────────┼───────────────┼───────────┤
     │ FE-1 │ Master   │ 9010          │ 8030      │
     ├──────┼──────────┼───────────────┼───────────┤
     │ FE-2 │ Observer │ 9011          │ 8031      │
     └──────┴──────────┴───────────────┴───────────┘
   
   ### Anything Else?
   
   _No response_
   
   ### Are you willing to submit PR?
   
   - [ ] Yes I am willing to submit a PR!
   
   ### Code of Conduct
   
   - [x] I agree to follow this project's [Code of 
Conduct](https://www.apache.org/foundation/policies/conduct)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to