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

[Issue 6173][compaction] Fix log compaction for flow control/empty topic/last deletion #6237

Merged
merged 7 commits into from
Feb 10, 2020

Conversation

fantapsody
Copy link
Contributor

Fixes #6173

Motivation

Fixes problems for log compaction found in issue #6173 :

  1. Compaction fails for an empty topic.
  2. Compaction never ends if the value of the last message is an empty batch message when the compaction is triggered.
  3. Compaction fails for a topic with batch messages because RawReader flow control doesn't handle batch messages properly.

Modifications

  1. Check if any message is available before compaction phases, and finish the compaction immediately if there is no messages to read to avoid timeout exception.
  2. Add missing check for empty batch message for the condition to end the phase 2 loop.
  3. Increase correct number of available permits in RawConsumer for batch messages.

Verifying this change

Producing messages in both batch and not-batch mode in corresponding tests.

@fantapsody fantapsody marked this pull request as ready for review February 6, 2020 13:45
@sijie sijie added area/compaction release/2.4.3 release/2.5.1 type/bug The PR fixed a bug or issue reported a bug labels Feb 7, 2020
@sijie sijie added this to the 2.6.0 milestone Feb 7, 2020
Copy link
Member

@sijie sijie left a comment

Choose a reason for hiding this comment

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

@fantapsody great job!

@sijie sijie merged commit d3f6c55 into apache:master Feb 10, 2020
tuteng pushed a commit to AmateurEvents/pulsar that referenced this pull request Feb 23, 2020
…pic/last deletion (apache#6237)

Fixes apache#6173

### Motivation

Fixes problems for log compaction found in issue apache#6173 :

1. Compaction fails for an empty topic. 
2. Compaction never ends if the value of the last message is an empty batch message when the compaction is triggered. 
3. Compaction fails for a topic with batch messages because RawReader flow control doesn't handle batch messages properly.

### Modifications

1. Check if any message is available before compaction phases, and finish the compaction immediately if there is no messages to read to avoid timeout exception.
2. Add missing check for empty batch message for the condition to end the phase 2 loop.
3. Increase correct number of available permits in RawConsumer for batch messages.

### Verifying this change

Producing messages in both batch and not-batch mode in corresponding tests.
tuteng pushed a commit to AmateurEvents/pulsar that referenced this pull request Mar 21, 2020
…pic/last deletion (apache#6237)

Fixes apache#6173

### Motivation

Fixes problems for log compaction found in issue apache#6173 :

1. Compaction fails for an empty topic. 
2. Compaction never ends if the value of the last message is an empty batch message when the compaction is triggered. 
3. Compaction fails for a topic with batch messages because RawReader flow control doesn't handle batch messages properly.

### Modifications

1. Check if any message is available before compaction phases, and finish the compaction immediately if there is no messages to read to avoid timeout exception.
2. Add missing check for empty batch message for the condition to end the phase 2 loop.
3. Increase correct number of available permits in RawConsumer for batch messages.

### Verifying this change

Producing messages in both batch and not-batch mode in corresponding tests.

(cherry picked from commit d3f6c55)
tuteng pushed a commit that referenced this pull request Apr 13, 2020
…pic/last deletion (#6237)

Fixes #6173

### Motivation

Fixes problems for log compaction found in issue #6173 :

1. Compaction fails for an empty topic. 
2. Compaction never ends if the value of the last message is an empty batch message when the compaction is triggered. 
3. Compaction fails for a topic with batch messages because RawReader flow control doesn't handle batch messages properly.

### Modifications

1. Check if any message is available before compaction phases, and finish the compaction immediately if there is no messages to read to avoid timeout exception.
2. Add missing check for empty batch message for the condition to end the phase 2 loop.
3. Increase correct number of available permits in RawConsumer for batch messages.

### Verifying this change

Producing messages in both batch and not-batch mode in corresponding tests.

(cherry picked from commit d3f6c55)
jiazhai pushed a commit to jiazhai/pulsar that referenced this pull request May 18, 2020
…pic/last deletion (apache#6237)

Fixes apache#6173

### Motivation

Fixes problems for log compaction found in issue apache#6173 :

1. Compaction fails for an empty topic.
2. Compaction never ends if the value of the last message is an empty batch message when the compaction is triggered.
3. Compaction fails for a topic with batch messages because RawReader flow control doesn't handle batch messages properly.

### Modifications

1. Check if any message is available before compaction phases, and finish the compaction immediately if there is no messages to read to avoid timeout exception.
2. Add missing check for empty batch message for the condition to end the phase 2 loop.
3. Increase correct number of available permits in RawConsumer for batch messages.

### Verifying this change

Producing messages in both batch and not-batch mode in corresponding tests.
(cherry picked from commit d3f6c55)
huangdx0726 pushed a commit to huangdx0726/pulsar that referenced this pull request Aug 24, 2020
…pic/last deletion (apache#6237)

Fixes apache#6173

### Motivation

Fixes problems for log compaction found in issue apache#6173 :

1. Compaction fails for an empty topic. 
2. Compaction never ends if the value of the last message is an empty batch message when the compaction is triggered. 
3. Compaction fails for a topic with batch messages because RawReader flow control doesn't handle batch messages properly.

### Modifications

1. Check if any message is available before compaction phases, and finish the compaction immediately if there is no messages to read to avoid timeout exception.
2. Add missing check for empty batch message for the condition to end the phase 2 loop.
3. Increase correct number of available permits in RawConsumer for batch messages.

### Verifying this change

Producing messages in both batch and not-batch mode in corresponding tests.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/compaction release/2.4.3 release/2.5.1 type/bug The PR fixed a bug or issue reported a bug
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Log compaction fails due to timeout
3 participants