Add a registration function for table allocation in master-slave mode. #3920
Add a registration function for table allocation in master-slave mode. #3920wardlican wants to merge 16 commits intoapache:masterfrom
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #3920 +/- ##
============================================
+ Coverage 29.00% 29.07% +0.07%
- Complexity 3850 3867 +17
============================================
Files 631 634 +3
Lines 50770 50880 +110
Branches 6543 6553 +10
============================================
+ Hits 14724 14795 +71
- Misses 34989 35023 +34
- Partials 1057 1062 +5
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
This pull request has been marked as stale due to 30 days of inactivity. It will be closed in 1 week if no further activity occurs. If you think that’s incorrect or this pull request requires a review, please simply write any comment. If closed, you can revive the PR at any time and @mention a reviewer or discuss it on the dev@amoro.apache.org list. Thank you for your contributions. |
|
Please check the changes here. |
|
This pull request has been marked as stale due to 30 days of inactivity. It will be closed in 1 week if no further activity occurs. If you think that’s incorrect or this pull request requires a review, please simply write any comment. If closed, you can revive the PR at any time and @mention a reviewer or discuss it on the dev@amoro.apache.org list. Thank you for your contributions. |
|
@zhoujinsong Please help with the CR . |
czy006
left a comment
There was a problem hiding this comment.
Thank you for your contribution. I left a comment.
amoro-ams/src/main/java/org/apache/amoro/server/ha/DataBaseHighAvailabilityContainer.java
Outdated
Show resolved
Hide resolved
| mapper.updateServerInfo( | ||
| clusterName, OPTIMIZING_SERVICE, nodeId, nodeIp, optimizingInfoJson, now); | ||
| if (updated == 0) { | ||
| mapper.insertServerInfoIfAbsent( |
There was a problem hiding this comment.
why not need to lease_expire_ts to first register time?
There was a problem hiding this comment.
Reasons for not requiring lease expiration times during the registration phase:
- Separation of Duties Principle: The registration phase focuses solely on establishing node identity; lease management is handled by a dedicated heartbeat mechanism.
- Avoid Race Conditions: Setting expiration times during registration could lead to multiple nodes simultaneously believing they have a lease.
- Simplified Registration Logic: The registration operation should be lightweight, avoiding complex lease status checks.
- Alignment with ZK Model: This design aligns with ZooKeeper's ephemeral node registration model.
Why are the changes needed?
The HighAvailabilityContainer adds a node registration function. In master-slave mode, each AMS node, after startup, needs to elect a master through ZooKeeper or DB and register its own node information in ZooKeeper or DB. Registration is done using ephemeral nodes. If a node fails, its registration information needs to be automatically deleted. The system also provides the master node with the ability to view the list of currently active nodes.
Close #3919 .
Brief change log
Core functionalities implemented:
The master node can query a list of all currently live nodes. In non-master or non-master-slave modes, an empty list is returned.
How was this patch tested?
Add some test cases that check the changes thoroughly including negative and positive cases if possible
Add screenshots for manual tests if appropriate
Run test locally before making a pull request
Documentation