-
Notifications
You must be signed in to change notification settings - Fork 594
HDDS-7817. Add HTTP and HTTPS ports to DatanodeDetails #4278
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/protocol/DatanodeDetails.java
Outdated
Show resolved
Hide resolved
| import com.google.common.annotations.VisibleForTesting; | ||
| import com.google.common.base.Preconditions; | ||
|
|
||
| import static org.apache.hadoop.hdds.protocol.DatanodeDetails.Port.Name.*; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/HddsDatanodeService.java
71: Using the '.*' form of import should be avoided - org.apache.hadoop.hdds.protocol.DatanodeDetails.Port.Name.*.
https://github.com/debiswal/ozone/actions/runs/4184593284/jobs/7250464577#step:6:435
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it was unintentional though, IDE has imported anyway have Removed it .
|
@fapifta Upgrade acceptance test is failing due to: So this is a backwards incompatible change. |
|
@adoroszlai This though should mean that the change in HDDS-5480 (#2452) is also backward incompatible, but it seems that the port information so far is not saved in the yaml file, as even if the ports are set in the DataNodeDetails, the DataNodeDetails is not persisted to the yaml file after the ports are set.
I am unsure about the initialization phases of DN, but it seems that in a cluster 1. runs before the ports are set, 2. does run only when a node is decommissioned or offlined, and after that when it is recommissioned, while 3. runs also before the ports are set. In this change though the HTTP and HTTPS ports are set before the InitDatanode state runs, and saved, and that is why we run into the problem. However this way there are a set of events that cause backward incompatibility with all the ports that were added after V0_PORTS (upgrade -> decomm/offline a node -> recomm the node -> downgrade). I think we might need to solve this similarly as it was solved for the client, but now we need to introduce the handling of unknown ports in the DatanodeIdYaml load logic instead of the client. As this was not discovered earlier the incompatibility remains for the REPLICATION, RATIS_ADMIN, RATIS_SERVER ports in the mentioned scenario, while we can handle it for the RATIS_DATASTREAM port as it was introduced after 1.3.0. @adoroszlai if you agree with my analisys, then I will set up the corresponding JIRAs to fix and handle these, but would not like to run ahead, and do it without consensus on how to solve the problem, and until that @debiswal we should keep this one open, as we need to find out how we want to handle the compatibility aspect of adding these new ports. |
Those were introduced in 1.1.0. I don't think we support downgrade to any version before that. CC @errose28 |
|
Right @adoroszlai. When this change was made on the datanode, it broke downgrade from 1.1.0 to 1.0.0. Since the upgrade framework was still WIP at that time and downgrade not officially supported, we decided not to support downgrade from 1.1.0 to 1.0.0 and allow the change. Now that we support downgrades this will need to be done in a backwards compatible way. |
|
closing this PR due to incompatibility in downgrade/upgrade system |
What changes were proposed in this pull request?
Adding HTTP & HTTPS Port for SCM UI
What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-7817
Patch Tested
Manually