Skip to content
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

Replace 101tec ZkClient with Helix ZkClient #870

Open
wants to merge 33 commits into
base: master
Choose a base branch
from

Conversation

surajkn
Copy link
Collaborator

@surajkn surajkn commented Nov 17, 2021

Use helix version 1.0.2. Extend common/zk/ZkClient.java from helix zookeeper client and refactoring
some code.

Important: DO NOT REPORT SECURITY ISSUES DIRECTLY ON GITHUB.
For reporting security issues and contributing security fixes,
please, email security@linkedin.com instead, as described in
the contribution guidelines.

Please, take a minute to review the contribution guidelines at:
https://github.com/linkedin/Brooklin/blob/master/CONTRIBUTING.md

Use helix version 1.0.2. Extend common/zk/ZkClient.java from helix zookeeper client and refactoring
some code.
@jzakaryan jzakaryan self-requested a review November 18, 2021 00:04
jzakaryan
jzakaryan previously approved these changes Nov 18, 2021
Copy link
Collaborator

@jzakaryan jzakaryan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

vmaheshw and others added 2 commits November 29, 2021 13:09
…on is unavailable. (linkedin#871)

* Use topic level throughput information when partition level information is unavailable

* Refactor code

Co-authored-by: Vaibhav Maheshwari <vmaheshw@vmaheshw-mn1.linkedin.biz>
Co-authored-by: Vaibhav Maheshwari <vmaheshw@vmaheshw-mn1.linkedin.biz>
Copy link
Collaborator

@vmaheshw vmaheshw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please address the comments from last review as well?

}

/**
* Get all children of zk path. Changes the access modified to public, its defined as protected in parent class.
*/
@Override
public List<String> getChildren(final String path, final boolean watch) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can probably get rid of this method itself since you are only calling super.()

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The method is declared as protected in parent class and here I am just expanding the access specifier.
For now I thought to keep this around and later I can investigate where all this is used (across all MPs) and then see if it can be changed to use just the "public" getChildren method in parent class. Same for a few other methods that I have done this way.

@Override
public String create(final String path, Object data, final CreateMode mode) throws RuntimeException {
if (path == null) {
throw new IllegalArgumentException("path must not be null.");
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new library throws NullPointerException instead of IllegalArgumentException. Can you plz check the contract of new methods ? Mostly the unit-tests are not covering it, otherwise the tests should have failed. May be a good idea to add those tests

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, this is something to bring up with Helix team that their contact says IllegalArgumentException but internally the method throws NullPointerException.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added unit test for NullPointerException. Will bring up the discrepancy with Helix team separately

surajkn and others added 3 commits December 3, 2021 18:39
…ze partitions (linkedin#876)

The load based estimator is considering the topic level metrics, but the assigner code is not using the information to distribute the partitions. Fixing the code to derive the partition level metrics.
surajkn and others added 12 commits December 13, 2021 16:42
…ets (linkedin#873)

* Flushless producer without comparing offsets

* Flushless Producer Supporting Both Comparable and Non Comparable Offsets for Ack-ing

* Fix comments

* Making methods abstract

* Created config support to use both strategies and added tests

* Address comments

* Address comments

Co-authored-by: Shrinand Thakkar <sthakkar@sthakkar-mn1.linkedin.biz>
Co-authored-by: Vaibhav Maheshwari <vmaheshw@vmaheshw-mn1.linkedin.biz>
…linkedin#882)

* Fixed issue with missing exception message during task initialization
* Changed log level to error
* Kafka upgrade

* Kafka upgrade

* Removing temp version

* Addressing comments: removing flag update after close to prevent threads misbehavior

* Removing dependency on li-apache-kafka-clients
* Skip onpartitionsrevoked during consumer.close()

* Bumping up version

* Fixing warning messages

* Fixing warning messages
Co-authored-by: Vaibhav Maheshwari <vmaheshw@vmaheshw-mn1.linkedin.biz>
… time (linkedin#897)

Previously when all duplicate streams expire at the same time (i.e. all duplicate streams might have
expired but were waiting for a DS add/delete event) we incorrectly identified that a duplicate
stream is still active since its still present in zk.
Co-authored-by: Shrinand Thakkar <sthakkar@sthakkar-mn1.linkedin.biz>
…improvements (linkedin#887)

Fixed bug where min/max partitions per task was being reported incorrectly. Previously, the min/max were the same across all datastreams.

New setGauge method in DynamicMetricsManager enables explicitly setting a gauge value. This reduces some lifecycle management complexity in LoadBalancedPartitionAssigner.

Incidental code quality improvements.

Tests added to verify affected metrics (min/maxPartitionsPerTask).

Fixed bug related to registration of Gauges and Timers (they weren't actually registered before).
* fix rebalancing-tasks bug and added tests

* add some more test cases with even number of instances and with single instance

Co-authored-by: Shrinand Thakkar <sthakkar@sthakkar-mn1.linkedin.biz>
shrinandthakkar and others added 14 commits April 12, 2022 14:07
Co-authored-by: Shrinand Thakkar <sthakkar@sthakkar-mn1.linkedin.biz>
Remove minimally used Scala Dependencies from Brooklin code to avoid cross-scala versions builds.
Introduce braodcast API to TrasnportProvider

This API will allow to sending events to all consumers/clients of TrasnsportProvider.
TransportProvider will be able to optionally implement broadcast API.
Example, for Kafka TrasnportProvider broadcast will send the event to all topic partitions.
* Update assignment to prevent duplicate task names

* Address feedback and add test for same name but different fields

* Simplify code since there cannot be duplicate datastream groups
* Fix Stopping Logic and Maintain Stopping Latch Counter

* --amend

Co-authored-by: Shrinand Thakkar <sthakkar@sthakkar-mn1.linkedin.biz>
…fter merging linkedin#877 (linkedin#908)

Co-authored-by: Shrinand Thakkar <sthakkar@sthakkar-mn1.linkedin.biz>
Use helix version 1.0.2. Extend common/zk/ZkClient.java from helix zookeeper client and refactoring
some code.
Zookeeper version upgrade is not required.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants