Skip to content

Conversation

@liangyepianzhou
Copy link
Contributor

Motivation

Optimize code and improve maintainability.

Modification

  • Option 1 (the way I use)
    Create a thread pool at peer TC.
    • advantage
      Each TC has a single thread pool to perform its own tasks, and will not be blocked due to sharing a single thread with other TCs
    • disadvantage
      Too many thread pools may be created
  • Option 2
    Create an ExecuteProvider in the TC service. It create some single-threaded pools when the TC Service is created, and then assign a single-threaded pool to TC when the TC is created
    • The advantages and disadvantages are opposite to the option one

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 yes was chosen, please highlight the changes

  • Dependencies (does it add or upgrade a dependency): (yes / no)
  • The public API: (yes / no)
  • The schema: (yes / no / don't know)
  • The default values of configurations: (yes / no)
  • The wire protocol: (yes / no)
  • The rest endpoints: (yes / no)
  • The admin cli options: (yes / no)
  • Anything that affects deployment: (yes / no / don't know)

Documentation

Check the box below or label this PR directly (if you have committer privilege).

Need to update docs?

  • doc-required

    (If you need help on updating docs, create a doc issue)

  • no-need-doc

    (Please explain why)

  • doc

    (If this PR contains doc changes)

### Motivation
Optimize code and improve maintainability.
### Modification
* Option 1 (the way I use)
Create a thread pool at peer TC.
  * advantage
  Each TC has a single thread pool to perform its own tasks, and will not be blocked due to sharing a single  thread with other TCs
  * disadvantage
  Too many thread pools may be created
* Option 2
Create an ExecuteProvider in the TC service.  It create some single-threaded pools when the TC Service is created, and  then assign a single-threaded pool to TC when the TC is created
   * The advantages and disadvantages are opposite to the option one
@liangyepianzhou
Copy link
Contributor Author

/pulsarbot run-failure-checks

@congbobo184 congbobo184 merged commit ced5786 into apache:master Feb 24, 2022
@codelipenghui codelipenghui modified the milestones: 2.11.0, 2.10.0 Feb 25, 2022
codelipenghui pushed a commit that referenced this pull request Feb 25, 2022
### Motivation
Optimize code and improve maintainability.
### Modification
* Option 1 (the way I use)
Create a thread pool at peer TC.
  * advantage
  Each TC has a single thread pool to perform its own tasks, and will not be blocked due to sharing a single  thread with other TCs
  * disadvantage
  Too many thread pools may be created
* Option 2
Create an ExecuteProvider in the TC service.  It create some single-threaded pools when the TC Service is created, and  then assign a single-threaded pool to TC when the TC is created
   * The advantages and disadvantages are opposite to the option one

(cherry picked from commit ced5786)
gaoran10 pushed a commit that referenced this pull request Mar 1, 2022
### Motivation
Optimize code and improve maintainability.
### Modification
* Option 1 (the way I use)
Create a thread pool at peer TC.
  * advantage
  Each TC has a single thread pool to perform its own tasks, and will not be blocked due to sharing a single  thread with other TCs
  * disadvantage
  Too many thread pools may be created
* Option 2
Create an ExecuteProvider in the TC service.  It create some single-threaded pools when the TC Service is created, and  then assign a single-threaded pool to TC when the TC is created
   * The advantages and disadvantages are opposite to the option one

(cherry picked from commit ced5786)
lhotari added a commit to lhotari/pulsar that referenced this pull request Mar 1, 2022
- MLTransactionMetadataStore.internalPinnedExecutor wasn't closed
  when MLTransactionMetadataStore.closeAsync was called
  - problem was introduced by apache#14238 changes

- this issue causes tests to fail with OOME. Most likely this also impacts
  production code.
@lhotari
Copy link
Member

lhotari commented Mar 1, 2022

This PR introduced a thread leak. Please review #14524 which is a fix for that particular problem.

@gaoran10 gaoran10 added the cherry-picked/branch-2.9 Archived: 2.9 is end of life label Mar 2, 2022
lhotari added a commit to lhotari/pulsar that referenced this pull request Mar 2, 2022
- MLTransactionMetadataStore.internalPinnedExecutor wasn't closed
  when MLTransactionMetadataStore.closeAsync was called
  - problem was introduced by apache#14238 changes

- this issue causes tests to fail with OOME. Most likely this also impacts
  production code.
lhotari added a commit that referenced this pull request Mar 2, 2022
- MLTransactionMetadataStore.internalPinnedExecutor wasn't closed
  when MLTransactionMetadataStore.closeAsync was called
  - problem was introduced by #14238 changes

- this issue causes tests to fail with OOME. Most likely this also impacts
  production code.

* Close TransactionMetadataStoreService after the broker service has been closed
codelipenghui pushed a commit that referenced this pull request Mar 2, 2022
- MLTransactionMetadataStore.internalPinnedExecutor wasn't closed
  when MLTransactionMetadataStore.closeAsync was called
  - problem was introduced by #14238 changes

- this issue causes tests to fail with OOME. Most likely this also impacts
  production code.

* Close TransactionMetadataStoreService after the broker service has been closed

(cherry picked from commit 0ddec86)
gaoran10 pushed a commit that referenced this pull request Mar 11, 2022
- MLTransactionMetadataStore.internalPinnedExecutor wasn't closed
  when MLTransactionMetadataStore.closeAsync was called
  - problem was introduced by #14238 changes

- this issue causes tests to fail with OOME. Most likely this also impacts
  production code.

* Close TransactionMetadataStoreService after the broker service has been closed

(cherry picked from commit 0ddec86)
Nicklee007 pushed a commit to Nicklee007/pulsar that referenced this pull request Apr 20, 2022
### Motivation
Optimize code and improve maintainability.
### Modification
* Option 1 (the way I use)
Create a thread pool at peer TC.
  * advantage
  Each TC has a single thread pool to perform its own tasks, and will not be blocked due to sharing a single  thread with other TCs
  * disadvantage
  Too many thread pools may be created
* Option 2
Create an ExecuteProvider in the TC service.  It create some single-threaded pools when the TC Service is created, and  then assign a single-threaded pool to TC when the TC is created
   * The advantages and disadvantages are opposite to the option one
Nicklee007 pushed a commit to Nicklee007/pulsar that referenced this pull request Apr 20, 2022
- MLTransactionMetadataStore.internalPinnedExecutor wasn't closed
  when MLTransactionMetadataStore.closeAsync was called
  - problem was introduced by apache#14238 changes

- this issue causes tests to fail with OOME. Most likely this also impacts
  production code.

* Close TransactionMetadataStoreService after the broker service has been closed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants