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

[fix #10235] fix deadlock on Monitoring thread blocked by LeaderService.isLeader() #10502

Conversation

freeznet
Copy link
Contributor

@freeznet freeznet commented May 7, 2021

Fixes #10235

Motivation

According to #10235, when LeaderService is changing leadership status (like losing leadership, or becoming a leader), the LeaderService will be locked with synchronized block. Which will block other threads if calling LeaderService.isLeader(). This PR changes ClusterServiceCoordinator and WorkerStatsManager to check if is leader from MembershipManager, which will not block other threads if LeaderService is at synchronized block.

Also, this PR will not resolve the root cause of #10235, since there is lack of context about blocked reader for the FunctionAssignmentTailer.

Verifying this change

  • Make sure that the change passes the CI checks.

@codelipenghui codelipenghui requested review from jerrypeng, sijie and merlimat and removed request for jerrypeng May 7, 2021 13:42
@codelipenghui codelipenghui added this to the 2.8.0 milestone May 7, 2021
Copy link
Contributor

@codelipenghui codelipenghui left a comment

Choose a reason for hiding this comment

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

LGTM

@merlimat merlimat requested a review from srkukarni May 7, 2021 17:37
@sijie sijie merged commit fb1d5de into apache:master May 8, 2021
codelipenghui pushed a commit that referenced this pull request May 9, 2021
…ce.isLeader() (#10512)

---

Fixes #10235

According to #10235, when `LeaderService` is changing leadership status
(like losing leadership, or becoming a leader), the `LeaderService` will
be locked with `synchronized` block. Which will block other threads if
calling `LeaderService.isLeader()`. This PR changes `ClusterServiceCoordinator`
and `WorkerStatsManager` to check if is leader from `MembershipManager`,
which will not block other threads if `LeaderService` is at `synchronized` block.

Also, this PR will not resolve the root cause of #10235, since there is
lack of context about blocked reader for the `FunctionAssignmentTailer`.

- [ ] Make sure that the change passes the CI checks.

--- 
Original PR is #10502
eolivelli pushed a commit to datastax/pulsar that referenced this pull request May 11, 2021
…ce.isLeader() (apache#10512)

---

Fixes apache#10235

According to apache#10235, when `LeaderService` is changing leadership status
(like losing leadership, or becoming a leader), the `LeaderService` will
be locked with `synchronized` block. Which will block other threads if
calling `LeaderService.isLeader()`. This PR changes `ClusterServiceCoordinator`
and `WorkerStatsManager` to check if is leader from `MembershipManager`,
which will not block other threads if `LeaderService` is at `synchronized` block.

Also, this PR will not resolve the root cause of apache#10235, since there is
lack of context about blocked reader for the `FunctionAssignmentTailer`.

- [ ] Make sure that the change passes the CI checks.

--- 
Original PR is apache#10502
eolivelli pushed a commit to eolivelli/pulsar that referenced this pull request May 11, 2021
…rService.isLeader() (apache#10502)

Fixes apache#10235

### Motivation

According to apache#10235, when `LeaderService` is changing leadership status (like losing leadership, or becoming a leader), the `LeaderService` will be locked with `synchronized` block. Which will block other threads if calling `LeaderService.isLeader()`. This PR changes `ClusterServiceCoordinator` and `WorkerStatsManager` to check if is leader from `MembershipManager`, which will not block other threads if `LeaderService` is at `synchronized` block.

Also, this PR will not resolve the root cause of apache#10235, since there is lack of context about blocked reader for the `FunctionAssignmentTailer`.
@codelipenghui codelipenghui added the cherry-picked/branch-2.7 Archived: 2.7 is end of life label May 13, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cherry-picked/branch-2.7 Archived: 2.7 is end of life release/2.7.3
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Deadlock on Monitoring thread ... LeaderService.isLeader()
3 participants