[ 
https://issues.apache.org/jira/browse/CASSANDRA-20173?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17953253#comment-17953253
 ] 

Dmitry Konstantinov edited comment on CASSANDRA-20173 at 5/21/25 9:09 PM:
--------------------------------------------------------------------------

Test results:
 * 
[https://ci-cassandra.apache.org/view/patches/job/Cassandra-devbranch-5/274/] 
 * [^ci_summary.html]
 * [^results_details_20173.tar.xz]

Failed tests analysis:
 * 
dtest-upgrade.upgrade_tests.cql_tests.TestCQLNodes3RF3_Upgrade_indev_4_0_x_To_indev_trunk
 test_delete_row  –  the test class failed with same kind of validation errors 
in trunk ([https://ci-cassandra.apache.org/job/Cassandra-trunk/2142/] , 
[https://ci-cassandra.apache.org/job/Cassandra-trunk/2141/])
 * distributed.test.ShortReadProtectionTest testGroupByStaticRow - timed out on 
CI, ShortReadProtectionTest passed locally (it took 41 min 19 sec), reported by 
Butler
 * distributed.test.accord.AccordHostReplacementTest hostReplace-_jdk17_x86_64 
– flaky, mentioned as well in CASSANDRA-20429
 * distributed.test.repair.AutoRepairSchedulerTest testScheduler-_jdk11_x86_64 
–  flaky - CASSANDRA-20620
 * distributed.upgrade.ClusterMetadataUpgradeHarryTest 
simpleUpgradeTest-cassandra.testtag_IS_UNDEFINED  – flaky, mentioned as well in 
CASSANDRA-19857
 * fuzz.sai.MultiNodeSAITest indexOnlySaiTest-cassandra.testtag_IS_UNDEFINED  – 
flaky, reported in CASSANDRA-20307
 * index.internal.CassandraIndexTest 
indexOnFirstClusteringColumn-latest_jdk11_x86_64 - passed locally (for default 
and latest configurations)
 * io.sstable.indexsummary.IndexSummaryTest testLargeIndexSummary  –  it was 
broken before the changes: CASSANDRA-20599
 * service.accord.SimulatedRandomKeysWithRangeConflictTest 
keysAllOverConflictingWithRange-cassandra.testtag_IS_UNDEFINED – timed out on 
CI, SimulatedRandomKeysWithRangeConflictTest passed locally (it took 4 min 44 
sec)

no failures affected by the changes found


was (Author: dnk):
Test results:
 * 
[https://ci-cassandra.apache.org/view/patches/job/Cassandra-devbranch-5/274/] 
 * [^ci_summary.html]
 * [^results_details_20173.tar.xz]

Failed tests analysis:
 * 
dtest-upgrade.upgrade_tests.cql_tests.TestCQLNodes3RF3_Upgrade_indev_4_0_x_To_indev_trunk
 test_delete_row  –  the test class failed with same kind of validation errors 
in trunk ([https://ci-cassandra.apache.org/job/Cassandra-trunk/2142/] , 
[https://ci-cassandra.apache.org/job/Cassandra-trunk/2141/])
 * distributed.test.ShortReadProtectionTest testGroupByStaticRow - timed out on 
CI, ShortReadProtectionTest passed locally (it took 41 min 19 sec), reported by 
Butler
 * distributed.test.accord.AccordHostReplacementTest hostReplace-_jdk17_x86_64 
– flaky, mentioned as well in CASSANDRA-20429
 * distributed.test.repair.AutoRepairSchedulerTest testScheduler-_jdk11_x86_64 
–  flaky - CASSANDRA-20620
 * distributed.upgrade.ClusterMetadataUpgradeHarryTest 
simpleUpgradeTest-cassandra.testtag_IS_UNDEFINED  – flaky, mentioned as well in 
CASSANDRA-19857
 * fuzz.sai.MultiNodeSAITest indexOnlySaiTest-cassandra.testtag_IS_UNDEFINED  – 
flaky, reported in CASSANDRA-20307
 * index.internal.CassandraIndexTest 
indexOnFirstClusteringColumn-latest_jdk11_x86_64 - passed locally (for default 
and latest configurations)
 * io.sstable.indexsummary.IndexSummaryTest testLargeIndexSummary  –  it was 
broken before the changes: CASSANDRA-20599
 * service.accord.SimulatedRandomKeysWithRangeConflictTest 
keysAllOverConflictingWithRange-cassandra.testtag_IS_UNDEFINED – timed out on 
CI, SimulatedRandomKeysWithRangeConflictTest passed locally (it took 4 min 44 
sec)

> Avoid new ByteBuffer allocation for each NativeCell/NativeClustering during 
> flushing of offheap_objects memtable
> ----------------------------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-20173
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-20173
>             Project: Apache Cassandra
>          Issue Type: Improvement
>          Components: Local/Memtable
>            Reporter: Dmitry Konstantinov
>            Assignee: Dmitry Konstantinov
>            Priority: Normal
>             Fix For: 5.x
>
>         Attachments: ci_summary.html, image-2024-12-29-13-06-13-115.png, 
> native_clustering_byte_buffer_alloc.png, results_details_20173.tar.xz
>
>          Time Spent: 4h 20m
>  Remaining Estimate: 0h
>
> Currently for memtable_allocation_type: offheap_objects when we flush a 
> memtable we allocate new ByteBuffer object for each NativeCell and 
> NativeClustering to write it to disk. It is one of the main contributors 
> (together with CASSANDRA-20162) to memory allocation for MemtableFlushWriter 
> thread:
> !image-2024-12-29-13-06-13-115.png|width=570!
> !native_clustering_byte_buffer_alloc.png|width=570!
> Instead of retrieving of the value() as ByteBuffer we can introduce 
> NativeValueAccessor to not expose ByteBuffer + keep it inside NativeCell as a 
> thread-local to re-use. Same idea is applicable for NativeClustering
> Note: for Cassandra 4.x the situation is even worse because we clone very 
> BTreeRow from off-heap to heap due to using the same iterator as for usual 
> reads (where we need to protect against memtable lifecycle changes). In case 
> of flushing such protection is not needed. For TrieMemtable we skip such 
> cloning (CASSANDRA-17240, 
> [https://github.com/apache/cassandra/blob/cassandra-5.0/src/java/org/apache/cassandra/db/memtable/TrieMemtable.java#L393]).
>  It makes sense to consider such skipping for over types of memtable too..



--
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