pulsar icon indicating copy to clipboard operation
pulsar copied to clipboard

[improve][client-c++] Use an atomic `state_` instead of the lock to improve performance

Open coderzc opened this issue 3 years ago • 6 comments
trafficstars

Motivation

Now, Use a lot of locks to ensure the atomicity of state_ in the ConsumerImpl, ProducerImpl, PartitionedConsumerImpl, and MultiTopicsConsumerImpl, we can use atomic state_ instead of the lock to improve performance.

Modifications

Use an atomic state_ instead of the lock to improve performance.

Verifying this change

  • [x] 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.

Need to update docs?

  • [ ] doc-required (Your PR needs to update docs and you will update later)

  • [x] doc-not-needed (Please explain why)

  • [ ] doc (Your PR contains doc changes)

  • [ ] doc-complete (Docs have been already added)

coderzc avatar Aug 04 '22 06:08 coderzc

@coderzc PartitionedConsumerImpl and MultiTopicsConsumerImpl may be also can improve

shibd avatar Aug 04 '22 13:08 shibd

@coderzc PartitionedConsumerImpl and MultiTopicsConsumerImpl may be also can improve

Thanks, I have already improved them.

coderzc avatar Aug 05 '22 04:08 coderzc

/pulsarbot run-failure-checks

coderzc avatar Aug 05 '22 10:08 coderzc

@BewareMyPower @shibd Could you review it again?

mattisonchao avatar Aug 07 '22 06:08 mattisonchao

/pulsarbot run-failure-checks

coderzc avatar Aug 08 '22 07:08 coderzc

@BewareMyPower PTAL

coderzc avatar Aug 08 '22 11:08 coderzc

The correct process on the following code might be a little complicated. I think we can add a TODO here.

      if (state_ != Ready && state_ != Pending) {
          state_ = Closed;

BewareMyPower avatar Aug 11 '22 11:08 BewareMyPower

Just left one final minor comment, LGTM.

BewareMyPower avatar Aug 11 '22 12:08 BewareMyPower