David Capwell created CASSANDRA-21055:
-----------------------------------------

             Summary: When updating a multi cell collection element, if the 
update is rejected then the shared Row.Builder is not freed causing all future 
mutations to be rejected
                 Key: CASSANDRA-21055
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-21055
             Project: Apache Cassandra
          Issue Type: Bug
          Components: Consistency/Coordination
            Reporter: David Capwell
            Assignee: David Capwell


BTreeRow.pooledUnsortedBuilder() is used to lower memory costs for requests, 
and need to call builder.build() to trigger cleanup of resources; but this does 
not happen if the mutation is rejected!

{code}
UPDATE tbl SET col[0] = 42 WHERE pk = 0;
{code}

The query above is able to hit this when the pk doesn’t exist, it leaks the 
BTreeRow.Builder and all mutations to this thread will now reject as 
org.apache.cassandra.db.rows.BTreeRow.Builder#newRow will detect this happened 
and will trigger a assert.

This was found in CASSANDRA-20828, but forking off into its own issue for 
better isolation.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to