[
https://issues.apache.org/jira/browse/CASSANDRA-13906?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16188968#comment-16188968
]
Ariel Weisberg commented on CASSANDRA-13906:
--------------------------------------------
I agree reference counting in Java is fraught due to the lack of Destructors
and other plumbing.
So do we always expect the refcnt to be one or some known number? Then we
should assert that at runtime and take an error path if it's not true (after
releasing the resources) or maybe just do rate limited logging.
If use after free is a concern we might want to make sure the buffer is set to
null so we get an NPE instead of a segfault. Then the code incorrectly using
the buffer will signal an error as well.
> Properly close StreamCompressionInputStream to release any ByteBuf
> ------------------------------------------------------------------
>
> Key: CASSANDRA-13906
> URL: https://issues.apache.org/jira/browse/CASSANDRA-13906
> Project: Cassandra
> Issue Type: Bug
> Reporter: Jason Brown
> Assignee: Jason Brown
>
> When running dtests for trunk (4.x) that perform some streaming, sometimes a
> {{ByteBuf}} is not released properly, and we get this error in the logs
> (causing the dtest to fail):
> {code}
> ERROR [MessagingService-NettyOutbound-Thread-4-2] 2017-09-26 13:42:37,940
> Slf4JLogger.java:176 - LEAK: ByteBuf.release() was not called before it's
> garbage-collected. Enable advanced leak reporting to find out where the leak
> occurred. To enable advanced leak reporting, specify the JVM option
> '-Dio.netty.leakDetection.level=advanced' or call
> ResourceLeakDetector.setLevel() See
> http://netty.io/wiki/reference-counted-objects.html for more information.
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]