Skip to content

Explicitly enable lead controller resource#6725

Merged
jackjlli merged 2 commits intomasterfrom
explicitly-enable-lead-controller-resource
Mar 31, 2021
Merged

Explicitly enable lead controller resource#6725
jackjlli merged 2 commits intomasterfrom
explicitly-enable-lead-controller-resource

Conversation

@jackjlli
Copy link
Copy Markdown
Member

@jackjlli jackjlli commented Mar 29, 2021

Description

This PR explicitly enables lead controller resource.
The purpose of this feature is to logically separate per-table functionality in all clusters.

After enabling lead controller resource, the controller host listed under CONTROLLER/LEADER ZNode only denotes the helix lead controller in the cluster.

The lead Pinot controller for each of the tables can be found by the following APIs:
Get the leaders for all the tables in the cluster
GET /leader/tables

Given a table name, return the partition id and lead controller instance id
GET /leader/tables/{tableName}

The RESOURCE_ENABLED config is to be removed whenever we release 0.8 or later version of Pinot.

Details can be found in doc: https://cwiki.apache.org/confluence/display/PINOT/Controller+Separation+between+Helix+and+Pinot

Upgrade Notes

Does this PR prevent a zero down-time upgrade? (Assume upgrade order: Controller, Broker, Server, Minion)

  • Yes (Please label as backward-incompat, and complete the section below on Release Notes)

Does this PR fix a zero-downtime upgrade introduced earlier?

  • Yes (Please label this as backward-incompat, and complete the section below on Release Notes)

Does this PR otherwise need attention when creating release notes? Things to consider:

  • New configuration options
  • Deprecation of configurations
  • Signature changes to public methods/interfaces
  • New plugins added or old plugins removed
  • Yes (Please label this PR as release-notes and complete the section on Release Notes)

Release Notes

This PR explicitly enabled lead controller resource. The controller host listed in CONTROLLER/LEADER ZNode only denotes the helix lead controller in the cluster. The actual logic (like controller periodic tasks, realtime segment completion) of Pinot lead controller is distributed to each of the Pinot only controllers.
After enabling this feature, Helix controller and Pinot controller don't have to be run in the same hardware.

Documentation

See https://cwiki.apache.org/confluence/display/PINOT/Controller+Separation+between+Helix+and+Pinot

@jackjlli jackjlli added the release-notes Referenced by PRs that need attention when compiling the next release notes label Mar 29, 2021
@codecov-io
Copy link
Copy Markdown

Codecov Report

Merging #6725 (8603bff) into master (8dbb70b) will decrease coverage by 30.21%.
The diff coverage is 100.00%.

Impacted file tree graph

@@             Coverage Diff             @@
##           master    #6725       +/-   ##
===========================================
- Coverage   73.83%   43.61%   -30.22%     
===========================================
  Files        1396     1402        +6     
  Lines       67765    67915      +150     
  Branches     9807     9821       +14     
===========================================
- Hits        50035    29622    -20413     
- Misses      14485    35816    +21331     
+ Partials     3245     2477      -768     
Flag Coverage Δ
integration 43.61% <100.00%> (+0.09%) ⬆️
unittests ?

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
...ot/controller/helix/core/util/HelixSetupUtils.java 86.51% <100.00%> (-1.27%) ⬇️
...c/main/java/org/apache/pinot/common/tier/Tier.java 0.00% <0.00%> (-100.00%) ⬇️
...ava/org/apache/pinot/spi/data/MetricFieldSpec.java 0.00% <0.00%> (-100.00%) ⬇️
...ava/org/apache/pinot/spi/stream/LongMsgOffset.java 0.00% <0.00%> (-100.00%) ⬇️
...ava/org/apache/pinot/core/util/fst/FSTBuilder.java 0.00% <0.00%> (-100.00%) ⬇️
...a/org/apache/pinot/spi/config/table/TableType.java 0.00% <0.00%> (-100.00%) ⬇️
...a/org/apache/pinot/spi/data/DateTimeFieldSpec.java 0.00% <0.00%> (-100.00%) ⬇️
...a/org/apache/pinot/spi/env/PinotConfiguration.java 0.00% <0.00%> (-100.00%) ⬇️
...a/org/apache/pinot/core/upsert/RecordLocation.java 0.00% <0.00%> (-100.00%) ⬇️
.../org/apache/pinot/spi/data/DimensionFieldSpec.java 0.00% <0.00%> (-100.00%) ⬇️
... and 896 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 8dbb70b...8603bff. Read the comment docs.

@jackjlli jackjlli linked an issue Mar 30, 2021 that may be closed by this pull request
@jackjlli jackjlli merged commit e8ef1de into master Mar 31, 2021
@jackjlli jackjlli deleted the explicitly-enable-lead-controller-resource branch March 31, 2021 16:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release-notes Referenced by PRs that need attention when compiling the next release notes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Remove config of enabling lead controller resource

4 participants