Skip to content

[cherry-pick][branch-2.10] Fix deadlock causes session notification not to work (#19754) - #19768

Merged
liangyepianzhou merged 2 commits into
branch-2.10from
deadlock
Mar 10, 2023
Merged

[cherry-pick][branch-2.10] Fix deadlock causes session notification not to work (#19754)#19768
liangyepianzhou merged 2 commits into
branch-2.10from
deadlock

Conversation

@liangyepianzhou

@liangyepianzhou liangyepianzhou commented Mar 9, 2023

Copy link
Copy Markdown
Contributor

Master #19754

Motivation

This is a namespace bundle double-owners problem. We found it in the memory dumps.

The memory dumps show that the notification thread has been blocked for a long time by the leader election deadlock, And many notifications are blocked in the executor queue. This causes we can't to revalidate the locks, and they are still thinking them working well.

For private reasons, I can't share the namespace bundle snapshot, but the blocked thread easily explains it.

image ^^ blocked thread

image

^^ executor queue

Modifications

  • Avoid putting the new task to single thread executor causes deadlock.

(cherry picked from commit cbd799f)

Verifying this change

  • Make sure that the change passes the CI checks.

(Please pick either of the following options)

This change is a trivial rework / code cleanup without any test coverage.

(or)

This change is already covered by existing tests, such as (please describe tests).

(or)

This change added tests and can be verified as follows:

(example:)

  • Added integration tests for end-to-end deployment with large payloads (10MB)
  • Extended integration test for recovery after broker failure

Does this pull request potentially affect one of the following parts:

If the box was checked, please highlight the changes

  • Dependencies (add or upgrade a dependency)
  • The public API
  • The schema
  • The default values of configurations
  • The threading model
  • The binary protocol
  • The REST endpoints
  • The admin CLI options
  • The metrics
  • Anything that affects deployment

Documentation

  • doc
  • doc-required
  • doc-not-needed
  • doc-complete

Matching PR in forked repository

PR in forked repository:

)

### Motivation

This is a namespace bundle double-owners problem. We found it in the memory dumps.

The memory dumps show that the notification thread has been blocked for a long time by the leader election deadlock, And many notifications are blocked in the executor queue. This causes we can't to revalidate the locks, and they are still thinking them working well.

For private reasons, I can't share the namespace bundle snapshot, but the blocked thread easily explains it.

<img width="1061" alt="image" src="https://user-images.githubusercontent.com/74767115/223670419-c4319f44-f1e1-4361-8c79-04c7f0dabe3c.png">
^^ blocked thread

<img width="949" alt="image" src="https://user-images.githubusercontent.com/74767115/223672000-fb4ce22c-6a45-4cb6-9d23-c36e3afbc93a.png">

^^ executor queue

### Modifications

- Avoid putting the new task to single thread executor causes deadlock.

(cherry picked from commit cbd799f)
@github-actions

github-actions Bot commented Mar 9, 2023

Copy link
Copy Markdown

@liangyepianzhou Please add the following content to your PR description and select a checkbox:

- [ ] `doc` <!-- Your PR contains doc changes -->
- [ ] `doc-required` <!-- Your PR changes impact docs and you will update later -->
- [ ] `doc-not-needed` <!-- Your PR changes do not impact docs -->
- [ ] `doc-complete` <!-- Docs have been already added -->

@github-actions github-actions Bot added doc-not-needed Your PR changes do not impact docs and removed doc-label-missing labels Mar 9, 2023
@liangyepianzhou liangyepianzhou changed the title [fix][meta] Fix deadlock causes session notification not to work (#19754) [cherry-pick][branch-2.10] Fix deadlock causes session notification not to work (#19754) Mar 9, 2023
@liangyepianzhou
liangyepianzhou merged commit 36794d9 into branch-2.10 Mar 10, 2023
@liangyepianzhou
liangyepianzhou deleted the deadlock branch March 10, 2023 02:11
nicoloboschi pushed a commit to datastax/pulsar that referenced this pull request Mar 10, 2023
…ot to work (apache#19754) (apache#19768)

Co-authored-by: Qiang Zhao <mattisonchao@apache.org>
Master apache#19754
### Motivation

This is a namespace bundle double-owners problem. We found it in the memory dumps.

The memory dumps show that the notification thread has been blocked for a long time by the leader election deadlock, And many notifications are blocked in the executor queue. This causes we can't to revalidate the locks, and they are still thinking them working well.

For private reasons, I can't share the namespace bundle snapshot, but the blocked thread easily explains it.

<img width="1061" alt="image" src="https://user-images.githubusercontent.com/74767115/223670419-c4319f44-f1e1-4361-8c79-04c7f0dabe3c.png"> ^^ blocked thread

<img width="949" alt="image" src="https://user-images.githubusercontent.com/74767115/223672000-fb4ce22c-6a45-4cb6-9d23-c36e3afbc93a.png">

^^ executor queue

### Modifications

- Avoid putting the new task to single thread executor causes deadlock.

(cherry picked from commit cbd799f)
(cherry picked from commit 36794d9)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

doc-not-needed Your PR changes do not impact docs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants