Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Optimization in the log_msg_clone_cow breaks the acknowledgment counting
This optimization try to avoid referencing the clone message, in case of it has no own payload.
But it is not correct because it breaks the acknowledgment counting.
Why?
Let's see the following situation:
O' has no own payload, sdata, etc.. (so the cow is not executed on this clone)
We are creating a clone from O': O''.
The original of O'' will be the O, not the O'.
This causes the problem, because the acknowledgment will be called for O not for O',
but it should be called for O', because it waits for this acknowledgment
The result is, that the original message (O) get more acknowledgment, than it expects, causing assertion