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

Dmitry Konstantinov commented on CASSANDRA-20162:
-------------------------------------------------

Thank you!

so, according to the report only one test failed: 
distributed.test.jmx.JMXFeatureTest.testOneNetworkInterfaceProvisioning-_jdk17_x86_64

which is not related to the changed functionality, based on the exception it 
looks like it is a conflict with an used ephemeral TCP port..
 * BindException: Address already in use
 * java.rmi.server.ExportException: Port already in use: 39101; nested 
exception is

{code:java}
java.util.concurrent.ExecutionException: java.lang.RuntimeException: 
Feature.JMX was enabled but could not be started.-java.lang.RuntimeException: 
java.util.concurrent.ExecutionException: java.lang.RuntimeException: 
Feature.JMX was enabled but could not be started.
        at org.apache.cassandra.utils.Throwables.maybeFail(Throwables.java:79)
        at 
org.apache.cassandra.utils.FBUtilities.waitOnFutures(FBUtilities.java:543)
        at 
org.apache.cassandra.distributed.impl.AbstractCluster.parallelForEach(AbstractCluster.java:788)
        at 
org.apache.cassandra.distributed.impl.AbstractCluster.startup(AbstractCluster.java:1051)
        at 
org.apache.cassandra.distributed.shared.AbstractBuilder.start(AbstractBuilder.java:166)
        at 
org.apache.cassandra.distributed.test.jmx.JMXFeatureTest.testJmxFeatures(JMXFeatureTest.java:77)
        at 
org.apache.cassandra.distributed.test.jmx.JMXFeatureTest.testOneNetworkInterfaceProvisioning(JMXFeatureTest.java:65)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Caused by: java.util.concurrent.ExecutionException: java.lang.RuntimeException: 
Feature.JMX was enabled but could not be started.
        at 
org.apache.cassandra.utils.concurrent.AbstractFuture.getWhenDone(AbstractFuture.java:239)
        at 
org.apache.cassandra.utils.concurrent.AbstractFuture.get(AbstractFuture.java:246)
        at 
org.apache.cassandra.utils.FBUtilities.waitOnFutures(FBUtilities.java:530)
Caused by: java.lang.RuntimeException: Feature.JMX was enabled but could not be 
started.
        at 
org.apache.cassandra.distributed.impl.IsolatedJmx.startJmx(IsolatedJmx.java:136)
        at 
org.apache.cassandra.distributed.impl.Instance.startJmx(Instance.java:780)
        at 
org.apache.cassandra.distributed.impl.Instance.lambda$startup$12(Instance.java:618)
        at 
org.apache.cassandra.concurrent.FutureTask$2.call(FutureTask.java:124)
        at org.apache.cassandra.concurrent.FutureTask.call(FutureTask.java:61)
        at org.apache.cassandra.concurrent.FutureTask.run(FutureTask.java:71)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at 
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: java.rmi.server.ExportException: Port already in use: 39101; nested 
exception is: 
        java.net.BindException: Address already in use
        at 
java.rmi/sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:346)
        at 
java.rmi/sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:243)
        at 
java.rmi/sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:415)
        at java.rmi/sun.rmi.transport.LiveRef.exportObject(LiveRef.java:147)
        at 
java.rmi/sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:235)
        at java.rmi/sun.rmi.registry.RegistryImpl.setup(RegistryImpl.java:223)
        at java.rmi/sun.rmi.registry.RegistryImpl.(RegistryImpl.java:182)
        at java.rmi/sun.rmi.registry.RegistryImpl.(RegistryImpl.java:152)
        at 
org.apache.cassandra.utils.JMXServerUtils$JmxRegistry.(JMXServerUtils.java:349)
        at 
org.apache.cassandra.distributed.impl.IsolatedJmx.startJmx(IsolatedJmx.java:97)
Caused by: java.net.BindException: Address already in use
        at java.base/sun.nio.ch.Net.bind0(Native Method)
        at java.base/sun.nio.ch.Net.bind(Net.java:555)
        at java.base/sun.nio.ch.Net.bind(Net.java:544)
        at java.base/sun.nio.ch.NioSocketImpl.bind(NioSocketImpl.java:648)
        at java.base/java.net.ServerSocket.bind(ServerSocket.java:388)
        at java.base/java.net.ServerSocket.(ServerSocket.java:274)
        at 
java.base/javax.net.DefaultServerSocketFactory.createServerSocket(ServerSocketFactory.java:231)
        at 
org.apache.cassandra.distributed.impl.CollectingRMIServerSocketFactoryImpl.createServerSocket(CollectingRMIServerSocketFactoryImpl.java:51)
        at 
java.rmi/sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(TCPEndpoint.java:673)
        at 
java.rmi/sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:335)
10.994 {code}

> Avoid memory allocation in NativeCell.valueSize() and 
> NativeClustering.dataSize()
> ---------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-20162
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-20162
>             Project: Apache Cassandra
>          Issue Type: Improvement
>          Components: Local/Memtable
>            Reporter: Dmitry Konstantinov
>            Assignee: Dmitry Konstantinov
>            Priority: Normal
>             Fix For: 5.0.x, 5.x
>
>         Attachments: Cell_valueSize_usage_during_flushing.png, 
> ci_summary_netudima_20162-5.0_142.html, image-2024-12-23-09-53-27-226.png, 
> jfr_allocation_profile.png, results_details_netudima_20162-5.0_142.tar.xz
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently for memtable_allocation_type: offheap_objects we allocate memory to 
> calculate dataSize() during a write to a memtable because we use default 
> implementation of dataSize() which retrieves an object using value() method.
> To avoid such memory allocation we can calculate data size directly for 
> NativeCell and NativeClustering
> test schema details:
> {code:java}
> CREATE TABLE memory_tests.test_table_text_0 (part_key text,clust_key 
> text,value_0 text,value_1 text,value_2 text,value_3 text,value_4 text,value_5 
> text,value_6 text,value_7 text,value_8 text,value_9 text,PRIMARY 
> KEY(part_key,clust_key))
> {code}
> write query:
> {code:java}
> INSERT INTO memory_tests.test_table_text_0 
> (part_key,clust_key,value_0,value_1,value_2,value_3,value_4,value_5,value_6,value_7,value_8,value_9)
>  VALUES (?,?,?,?,?,?,?,?,?,?,?,?)
> {code}
> changed settings:
> {code:java}
> memtable_allocation_type: offheap_objects
> memtable:
>   configurations:
>     skiplist:
>       class_name: SkipListMemtable
>     trie:
>       class_name: TrieMemtable
>     default:
>       inherits: trie // changed default to trie
> {code}
> JFR allocation report:
> !jfr_allocation_profile.png|width=570!
> !image-2024-12-23-09-53-27-226.png|width=570!
> Memtable flushing logic also is affected:
> !Cell_valueSize_usage_during_flushing.png|width=570!



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