You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by be...@apache.org on 2015/02/13 11:42:42 UTC
[3/6] cassandra git commit: Fix memory leak in SSTableSimple*Writer
and SSTableReader.validate()
Fix memory leak in SSTableSimple*Writer and SSTableReader.validate()
patch by benedict; reviewed by marcus for CASSANDRA-8748
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/b1825e6f
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/b1825e6f
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/b1825e6f
Branch: refs/heads/trunk
Commit: b1825e6f840402c86b36f0e7910318f366a4cced
Parents: b0b64fd
Author: Benedict Elliott Smith <be...@apache.org>
Authored: Fri Feb 13 10:26:53 2015 +0000
Committer: Benedict Elliott Smith <be...@apache.org>
Committed: Fri Feb 13 10:26:53 2015 +0000
----------------------------------------------------------------------
CHANGES.txt | 1 +
src/java/org/apache/cassandra/io/sstable/SSTableReader.java | 3 +++
.../cassandra/io/sstable/SSTableSimpleUnsortedWriter.java | 2 +-
.../apache/cassandra/io/sstable/SSTableSimpleWriter.java | 2 +-
src/java/org/apache/cassandra/io/sstable/SSTableWriter.java | 9 ++++++++-
5 files changed, 14 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/b1825e6f/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index aef3a1e..3d7bf12 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
2.0.13:
+ * Fix memory leak in SSTableSimple*Writer and SSTableReader.validate() (CASSANDRA-8748)
* Fix some multi-column relations with indexes on some clustering
columns (CASSANDRA-8275)
* Fix IllegalArgumentException in dynamic snitch (CASSANDRA-8448)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/b1825e6f/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
index 803c7fa..15808e8 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
@@ -593,7 +593,10 @@ public class SSTableReader extends SSTable implements Closeable
private void validate()
{
if (this.first.compareTo(this.last) > 0)
+ {
+ releaseReference();
throw new IllegalStateException(String.format("SSTable first key %s > last key %s", this.first, this.last));
+ }
}
/** get the position in the index file to start scanning to find the given key (at most indexInterval keys away) */
http://git-wip-us.apache.org/repos/asf/cassandra/blob/b1825e6f/src/java/org/apache/cassandra/io/sstable/SSTableSimpleUnsortedWriter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableSimpleUnsortedWriter.java b/src/java/org/apache/cassandra/io/sstable/SSTableSimpleUnsortedWriter.java
index db03ea1..614ca7d 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableSimpleUnsortedWriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableSimpleUnsortedWriter.java
@@ -227,7 +227,7 @@ public class SSTableSimpleUnsortedWriter extends AbstractSSTableSimpleWriter
throw new AssertionError("Empty partition");
first = false;
}
- writer.close();
+ writer.close(true);
}
}
catch (Throwable e)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/b1825e6f/src/java/org/apache/cassandra/io/sstable/SSTableSimpleWriter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableSimpleWriter.java b/src/java/org/apache/cassandra/io/sstable/SSTableSimpleWriter.java
index 9b584f0..bef78b3 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableSimpleWriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableSimpleWriter.java
@@ -72,7 +72,7 @@ public class SSTableSimpleWriter extends AbstractSSTableSimpleWriter
{
if (currentKey != null)
writeRow(currentKey, columnFamily);
- writer.close();
+ writer.close(true);
}
catch (FSError e)
{
http://git-wip-us.apache.org/repos/asf/cassandra/blob/b1825e6f/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java b/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
index 08e5527..300b0f3 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
@@ -363,11 +363,18 @@ public class SSTableWriter extends SSTable
return sstable;
}
- // Close the writer and return the descriptor to the new sstable and it's metadata
public Pair<Descriptor, SSTableMetadata> close()
{
+ return close(false);
+ }
+
+ // Close the writer and return the descriptor to the new sstable and it's metadata
+ public Pair<Descriptor, SSTableMetadata> close(boolean closeBf)
+ {
// index and filter
iwriter.close();
+ if (closeBf)
+ iwriter.bf.close();
// main data, close will truncate if necessary
dataFile.close();
// write sstable statistics