[
https://issues.apache.org/jira/browse/CASSANDRA-10837?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15058870#comment-15058870
]
Alex Liu edited comment on CASSANDRA-10837 at 12/15/15 9:32 PM:
----------------------------------------------------------------
The changes to CqlRecordWriter seems wrong to me.
The Cluster and the Session instances were both properly managed by the
try-with-resources statement. In the patch version only the Cluster instance is
closed.
================
https://github.com/datastax/java-driver/blob/2.1/driver-core/src/main/java/com/datastax/driver/core/Cluster.java
Cluster doesn't implement AutoClosable interface, so it has to be closed
manually. Closing cluster will close all session objects associated with it.
Making the Cluster an instance variable in NativeRingCache will trigger an
error when the write method will be called, as the Cluster has been closed at
the end of the constructor.
=================
NativeRingCache uses the cluster to get the metadata in the constructor when
cluster object is still open. once the initialization of constructor is done,
the cluster object is not used by NativeRingCache anymore.
In CqlInputFormat could you use try-with-resources for both Cluster and Session
instances. I think it is best to do things properly by closing both of them.
================
Similarly closing cluster object auto-close all sessions objects.
was (Author: alexliu68):
The changes to CqlRecordWriter seems wrong to me.
The Cluster and the Session instances were both properly managed by the
try-with-resources statement. In the patch version only the Cluster instance is
closed.
================
https://github.com/datastax/java-driver/blob/2.1/driver-core/src/main/java/com/datastax/driver/core/Cluster.java
Cluster doesn't implements AutoClosable interface, so it has to be closes
manually. Closing cluster will close all session objects associated with it.
Making the Cluster an instance variable in NativeRingCache will trigger an
error when the write method will be called, as the Cluster has been closed at
the end of the constructor.
=================
NativeRingCache uses the cluster to get the metadata in the constructor when
cluster object is still open. once the initialization of constructor is done,
the cluster object is not used by NativeRingCache anymore.
In CqlInputFormat could you use try-with-resources for both Cluster and Session
instances. I think it is best to do things properly by closing both of them.
================
Similarly closing cluster object auto-close all sessions objects.
> Cluster/session should be closed in Cassandra Hadoop Input/Output classes
> -------------------------------------------------------------------------
>
> Key: CASSANDRA-10837
> URL: https://issues.apache.org/jira/browse/CASSANDRA-10837
> Project: Cassandra
> Issue Type: Bug
> Components: CQL
> Reporter: Alex Liu
> Assignee: Alex Liu
> Fix For: 3.0.x
>
> Attachments: 10837-3.0-branch.txt, 10837-v2-3.0-branch.txt
>
>
> See a lot of following warnings during Hadoop job running
> {code}
> ERROR 11:37:45 LEAK: You are creating too many HashedWheelTimer instances.
> HashedWheelTimer is a shared resource that must be reused across the JVM,so
> that only a few instances are created.
> {code}
> Each cluster/session needs be closed and a shared HashedWheelTimer may reduce
> the resource leakage.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)