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:12:44 UTC
[2/5] 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/c14a7d51
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c14a7d51
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c14a7d51
Branch: refs/heads/trunk
Commit: c14a7d51e601b40cd0be03576dfcb9dba5a0abe9
Parents: a72869c
Author: Benedict Elliott Smith <be...@apache.org>
Authored: Fri Feb 13 10:10:02 2015 +0000
Committer: Benedict Elliott Smith <be...@apache.org>
Committed: Fri Feb 13 10:10:02 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/c14a7d51/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index d2ecccc..096e630 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)
* Throw OOM if allocating memory fails to return a valid pointer (CASSANDRA-8726)
* Fix SSTableSimpleUnsortedWriter ConcurrentModificationException (CASSANDRA-8619)
* Round up time deltas lower than 1ms in BulkLoader (CASSANDRA-8645)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/c14a7d51/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/c14a7d51/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/c14a7d51/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/c14a7d51/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