smiklosovic opened a new pull request, #4886:
URL: https://github.com/apache/cassandra/pull/4886

   When BTreeRow.merge reconciles an update into a row whose existing deletion 
shadows the update's cells, it filtered the update (incoming) side of the merge 
with Reconciler.retain, which records the removal via 
PostReconciliationFunction.delete. On the memtable write path that subtracts 
the shadowed cells' on-heap size from the allocator's ownership even though 
that incoming data was never allocated to the memtable. Under overwrite/delete 
churn that re-applies cells already covered by a newer row/partition deletion 
(e.g. repair re-streaming), the allocator's "owns" counter drifts negative and 
the next flush trips "AssertionError: Negative released" in 
MemtablePool$SubPool.released via MemtableAllocator$SubAllocator.releaseAll 
during discard.
   
   Filter the update (incoming) side with a non-recording variant, 
Reconciler.removeShadowed, and keep retain() for the existing side, whose data 
the memtable already owns. The filtered result is identical; only the erroneous 
accounting notification is dropped. This mirrors the already-correct 
complex-column path in ColumnData.merge.
   
   patch by Stefan Miklosovic; reviewed by Dmitry Konstantinov for 
CASSANDRA-21390
   
   Assisted-By: Claude Opus 4.8 <[email protected]>
   
   Thanks for sending a pull request! Here are some tips if you're new here:
    
    * Ensure you have added or run the [appropriate 
tests](https://cassandra.apache.org/_/development/testing.html) for your PR.
    * Be sure to keep the PR description updated to reflect all changes.
    * Write your PR title to summarize what this PR proposes.
    * If possible, provide a concise example to reproduce the issue for a 
faster review.
    * Read our [contributor 
guidelines](https://cassandra.apache.org/_/development/index.html)
    * If you're making a documentation change, see our [guide to documentation 
contribution](https://cassandra.apache.org/_/development/documentation.html)
    
   Commit messages should follow the following format:
   
   ```
   <One sentence description, usually Jira title or CHANGES.txt summary>
   
   <Optional lengthier description (context on patch)>
   
   patch by <Authors>; reviewed by <Reviewers> for CASSANDRA-#####
   
   Co-authored-by: Name1 <email1>
   Co-authored-by: Name2 <email2>
   
   ```
   
   The [Cassandra 
Jira](https://issues.apache.org/jira/projects/CASSANDRA/issues/)
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to