git commit: Fix resetAndTruncate:ing CompressionMetadata

2014-03-03 Thread marcuse
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.0 b3a9a4434 - 41d8a5f48


Fix resetAndTruncate:ing CompressionMetadata

Patch by kvaster, reviewed by marcuse for CASSANDRA-6791


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/41d8a5f4
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/41d8a5f4
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/41d8a5f4

Branch: refs/heads/cassandra-2.0
Commit: 41d8a5f4861c37ff8e22344418e9277236672c1f
Parents: b3a9a44
Author: Marcus Eriksson marc...@apache.org
Authored: Mon Mar 3 11:35:03 2014 +0100
Committer: Marcus Eriksson marc...@apache.org
Committed: Mon Mar 3 14:21:00 2014 +0100

--
 CHANGES.txt |  1 +
 .../io/compress/CompressedSequentialWriter.java |  2 +-
 .../CompressedRandomAccessReaderTest.java   | 42 
 3 files changed, 44 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/41d8a5f4/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 3e73f91..6de11c5 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -28,6 +28,7 @@
  * Disallow post-query re-ordering when paging (CASSANDRA-6722)
  * Fix potential paging bug with deleted columns (CASSANDRA-6748)
  * Fix NPE on BulkLoader caused by losing StreamEvent (CASSANDRA-6636)
+ * Fix truncating compression metadata (CASSANDRA-6791)
 Merged from 1.2:
  * Add CMSClassUnloadingEnabled JVM option (CASSANDRA-6541)
  * Catch memtable flush exceptions during shutdown (CASSANDRA-6735)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/41d8a5f4/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
--
diff --git 
a/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java 
b/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
index 54b990f..eef5b17 100644
--- a/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
+++ b/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
@@ -231,7 +231,7 @@ public class CompressedSequentialWriter extends 
SequentialWriter
 
 // truncate data and index file
 truncate(chunkOffset);
-metadataWriter.resetAndTruncate(realMark.nextChunkIndex);
+metadataWriter.resetAndTruncate(realMark.nextChunkIndex - 1);
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/cassandra/blob/41d8a5f4/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
--
diff --git 
a/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
 
b/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
index ee32a0e..3c9dfe5 100644
--- 
a/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
+++ 
b/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
@@ -19,11 +19,13 @@
 package org.apache.cassandra.io.compress;
 
 import java.io.*;
+import java.util.Collections;
 import java.util.Random;
 
 import org.junit.Test;
 
 import org.apache.cassandra.db.marshal.BytesType;
+import org.apache.cassandra.exceptions.ConfigurationException;
 import org.apache.cassandra.io.sstable.CorruptSSTableException;
 import org.apache.cassandra.io.sstable.SSTableMetadata;
 import org.apache.cassandra.io.util.*;
@@ -48,6 +50,46 @@ public class CompressedRandomAccessReaderTest
 testResetAndTruncate(File.createTempFile(compressed, 1), true, 10);
 testResetAndTruncate(File.createTempFile(compressed, 2), true, 
CompressionParameters.DEFAULT_CHUNK_LENGTH);
 }
+@Test
+public void test6791() throws IOException, ConfigurationException
+{
+File f = File.createTempFile(compressed6791_, 3);
+String filename = f.getAbsolutePath();
+try
+{
+
+SSTableMetadata.Collector sstableMetadataCollector = 
SSTableMetadata.createCollector(BytesType.instance).replayPosition(null);
+CompressedSequentialWriter writer = new 
CompressedSequentialWriter(f, filename + .metadata, false, new 
CompressionParameters(SnappyCompressor.instance, 32, Collections.String, 
StringemptyMap()), sstableMetadataCollector);
+
+for (int i = 0; i  20; i++)
+writer.write(x.getBytes());
+
+FileMark mark = writer.mark();
+// write enough garbage to create new chunks:
+for (int i = 0; i  40; ++i)
+writer.write(y.getBytes());
+
+writer.resetAndTruncate(mark);
+
+for (int i = 0; i  20; i++)
+

[1/3] git commit: Fix resetAndTruncate:ing CompressionMetadata

2014-03-03 Thread marcuse
Repository: cassandra
Updated Branches:
  refs/heads/trunk 7d8092b66 - e80564f39


Fix resetAndTruncate:ing CompressionMetadata

Patch by kvaster, reviewed by marcuse for CASSANDRA-6791


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/41d8a5f4
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/41d8a5f4
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/41d8a5f4

Branch: refs/heads/trunk
Commit: 41d8a5f4861c37ff8e22344418e9277236672c1f
Parents: b3a9a44
Author: Marcus Eriksson marc...@apache.org
Authored: Mon Mar 3 11:35:03 2014 +0100
Committer: Marcus Eriksson marc...@apache.org
Committed: Mon Mar 3 14:21:00 2014 +0100

--
 CHANGES.txt |  1 +
 .../io/compress/CompressedSequentialWriter.java |  2 +-
 .../CompressedRandomAccessReaderTest.java   | 42 
 3 files changed, 44 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/41d8a5f4/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 3e73f91..6de11c5 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -28,6 +28,7 @@
  * Disallow post-query re-ordering when paging (CASSANDRA-6722)
  * Fix potential paging bug with deleted columns (CASSANDRA-6748)
  * Fix NPE on BulkLoader caused by losing StreamEvent (CASSANDRA-6636)
+ * Fix truncating compression metadata (CASSANDRA-6791)
 Merged from 1.2:
  * Add CMSClassUnloadingEnabled JVM option (CASSANDRA-6541)
  * Catch memtable flush exceptions during shutdown (CASSANDRA-6735)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/41d8a5f4/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
--
diff --git 
a/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java 
b/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
index 54b990f..eef5b17 100644
--- a/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
+++ b/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
@@ -231,7 +231,7 @@ public class CompressedSequentialWriter extends 
SequentialWriter
 
 // truncate data and index file
 truncate(chunkOffset);
-metadataWriter.resetAndTruncate(realMark.nextChunkIndex);
+metadataWriter.resetAndTruncate(realMark.nextChunkIndex - 1);
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/cassandra/blob/41d8a5f4/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
--
diff --git 
a/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
 
b/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
index ee32a0e..3c9dfe5 100644
--- 
a/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
+++ 
b/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
@@ -19,11 +19,13 @@
 package org.apache.cassandra.io.compress;
 
 import java.io.*;
+import java.util.Collections;
 import java.util.Random;
 
 import org.junit.Test;
 
 import org.apache.cassandra.db.marshal.BytesType;
+import org.apache.cassandra.exceptions.ConfigurationException;
 import org.apache.cassandra.io.sstable.CorruptSSTableException;
 import org.apache.cassandra.io.sstable.SSTableMetadata;
 import org.apache.cassandra.io.util.*;
@@ -48,6 +50,46 @@ public class CompressedRandomAccessReaderTest
 testResetAndTruncate(File.createTempFile(compressed, 1), true, 10);
 testResetAndTruncate(File.createTempFile(compressed, 2), true, 
CompressionParameters.DEFAULT_CHUNK_LENGTH);
 }
+@Test
+public void test6791() throws IOException, ConfigurationException
+{
+File f = File.createTempFile(compressed6791_, 3);
+String filename = f.getAbsolutePath();
+try
+{
+
+SSTableMetadata.Collector sstableMetadataCollector = 
SSTableMetadata.createCollector(BytesType.instance).replayPosition(null);
+CompressedSequentialWriter writer = new 
CompressedSequentialWriter(f, filename + .metadata, false, new 
CompressionParameters(SnappyCompressor.instance, 32, Collections.String, 
StringemptyMap()), sstableMetadataCollector);
+
+for (int i = 0; i  20; i++)
+writer.write(x.getBytes());
+
+FileMark mark = writer.mark();
+// write enough garbage to create new chunks:
+for (int i = 0; i  40; ++i)
+writer.write(y.getBytes());
+
+writer.resetAndTruncate(mark);
+
+for (int i = 0; i  20; i++)
+writer.write(x.getBytes());
+   

[1/2] git commit: Fix resetAndTruncate:ing CompressionMetadata

2014-03-03 Thread marcuse
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.1 dcca99684 - e4437bc18


Fix resetAndTruncate:ing CompressionMetadata

Patch by kvaster, reviewed by marcuse for CASSANDRA-6791


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/41d8a5f4
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/41d8a5f4
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/41d8a5f4

Branch: refs/heads/cassandra-2.1
Commit: 41d8a5f4861c37ff8e22344418e9277236672c1f
Parents: b3a9a44
Author: Marcus Eriksson marc...@apache.org
Authored: Mon Mar 3 11:35:03 2014 +0100
Committer: Marcus Eriksson marc...@apache.org
Committed: Mon Mar 3 14:21:00 2014 +0100

--
 CHANGES.txt |  1 +
 .../io/compress/CompressedSequentialWriter.java |  2 +-
 .../CompressedRandomAccessReaderTest.java   | 42 
 3 files changed, 44 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/41d8a5f4/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 3e73f91..6de11c5 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -28,6 +28,7 @@
  * Disallow post-query re-ordering when paging (CASSANDRA-6722)
  * Fix potential paging bug with deleted columns (CASSANDRA-6748)
  * Fix NPE on BulkLoader caused by losing StreamEvent (CASSANDRA-6636)
+ * Fix truncating compression metadata (CASSANDRA-6791)
 Merged from 1.2:
  * Add CMSClassUnloadingEnabled JVM option (CASSANDRA-6541)
  * Catch memtable flush exceptions during shutdown (CASSANDRA-6735)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/41d8a5f4/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
--
diff --git 
a/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java 
b/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
index 54b990f..eef5b17 100644
--- a/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
+++ b/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
@@ -231,7 +231,7 @@ public class CompressedSequentialWriter extends 
SequentialWriter
 
 // truncate data and index file
 truncate(chunkOffset);
-metadataWriter.resetAndTruncate(realMark.nextChunkIndex);
+metadataWriter.resetAndTruncate(realMark.nextChunkIndex - 1);
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/cassandra/blob/41d8a5f4/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
--
diff --git 
a/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
 
b/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
index ee32a0e..3c9dfe5 100644
--- 
a/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
+++ 
b/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
@@ -19,11 +19,13 @@
 package org.apache.cassandra.io.compress;
 
 import java.io.*;
+import java.util.Collections;
 import java.util.Random;
 
 import org.junit.Test;
 
 import org.apache.cassandra.db.marshal.BytesType;
+import org.apache.cassandra.exceptions.ConfigurationException;
 import org.apache.cassandra.io.sstable.CorruptSSTableException;
 import org.apache.cassandra.io.sstable.SSTableMetadata;
 import org.apache.cassandra.io.util.*;
@@ -48,6 +50,46 @@ public class CompressedRandomAccessReaderTest
 testResetAndTruncate(File.createTempFile(compressed, 1), true, 10);
 testResetAndTruncate(File.createTempFile(compressed, 2), true, 
CompressionParameters.DEFAULT_CHUNK_LENGTH);
 }
+@Test
+public void test6791() throws IOException, ConfigurationException
+{
+File f = File.createTempFile(compressed6791_, 3);
+String filename = f.getAbsolutePath();
+try
+{
+
+SSTableMetadata.Collector sstableMetadataCollector = 
SSTableMetadata.createCollector(BytesType.instance).replayPosition(null);
+CompressedSequentialWriter writer = new 
CompressedSequentialWriter(f, filename + .metadata, false, new 
CompressionParameters(SnappyCompressor.instance, 32, Collections.String, 
StringemptyMap()), sstableMetadataCollector);
+
+for (int i = 0; i  20; i++)
+writer.write(x.getBytes());
+
+FileMark mark = writer.mark();
+// write enough garbage to create new chunks:
+for (int i = 0; i  40; ++i)
+writer.write(y.getBytes());
+
+writer.resetAndTruncate(mark);
+
+for (int i = 0; i  20; i++)
+

git commit: Fix resetAndTruncate:ing CompressionMetadata

2014-03-03 Thread marcuse
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-1.2 f08ae394f - 64098f7d6


Fix resetAndTruncate:ing CompressionMetadata

Patch by kvaster, reviewed by marcuse for CASSANDRA-6791


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/64098f7d
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/64098f7d
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/64098f7d

Branch: refs/heads/cassandra-1.2
Commit: 64098f7d6f0b122448693a3c6da16af54c99013b
Parents: f08ae39
Author: Marcus Eriksson marc...@apache.org
Authored: Mon Mar 3 15:03:34 2014 +0100
Committer: Marcus Eriksson marc...@apache.org
Committed: Mon Mar 3 15:03:34 2014 +0100

--
 CHANGES.txt |  2 +-
 .../io/compress/CompressedSequentialWriter.java |  2 +-
 .../CompressedRandomAccessReaderTest.java   | 43 
 3 files changed, 45 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/64098f7d/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 780b528..b3c0a35 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -19,7 +19,7 @@
  * Support negative timestamps for CQL3 dates in query string (CASSANDRA-6718)
  * Avoid NPEs when receiving table changes for an unknown keyspace 
(CASSANDRA-5631)
  * Fix bootstrapping when there is no schema (CASSANDRA-6685)
-
+ * Fix truncating compression metadata (CASSANDRA-6791)
 
 1.2.15
  * Move handling of migration event source to solve bootstrap race 
(CASSANDRA-6648)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/64098f7d/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
--
diff --git 
a/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java 
b/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
index 00eb5a7..da55e83 100644
--- a/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
+++ b/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
@@ -231,7 +231,7 @@ public class CompressedSequentialWriter extends 
SequentialWriter
 
 // truncate data and index file
 truncate(chunkOffset);
-metadataWriter.resetAndTruncate(realMark.nextChunkIndex);
+metadataWriter.resetAndTruncate(realMark.nextChunkIndex - 1);
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/cassandra/blob/64098f7d/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
--
diff --git 
a/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
 
b/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
index 830c3e1..678a650 100644
--- 
a/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
+++ 
b/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
@@ -19,10 +19,12 @@
 package org.apache.cassandra.io.compress;
 
 import java.io.*;
+import java.util.Collections;
 import java.util.Random;
 
 import org.junit.Test;
 
+import org.apache.cassandra.exceptions.ConfigurationException;
 import org.apache.cassandra.io.sstable.CorruptSSTableException;
 import org.apache.cassandra.io.sstable.SSTableMetadata;
 import org.apache.cassandra.io.util.*;
@@ -95,6 +97,47 @@ public class CompressedRandomAccessReaderTest
 }
 
 @Test
+public void test6791() throws IOException, ConfigurationException
+{
+File f = File.createTempFile(compressed6791_, 3);
+String filename = f.getAbsolutePath();
+try
+{
+
+SSTableMetadata.Collector sstableMetadataCollector = 
SSTableMetadata.createCollector().replayPosition(null);
+CompressedSequentialWriter writer = new 
CompressedSequentialWriter(f, filename + .metadata, false, new 
CompressionParameters(SnappyCompressor.instance, 32, Collections.String, 
StringemptyMap()), sstableMetadataCollector);
+
+for (int i = 0; i  20; i++)
+writer.write(x.getBytes());
+
+FileMark mark = writer.mark();
+// write enough garbage to create new chunks:
+for (int i = 0; i  40; i++)
+writer.write(y.getBytes());
+
+writer.resetAndTruncate(mark);
+
+for (int i = 0; i  20; i++)
+writer.write(x.getBytes());
+writer.close();
+
+CompressedRandomAccessReader reader = 
CompressedRandomAccessReader.open(filename, new CompressionMetadata(filename + 
.metadata, f.length()), false);
+String res = reader.readLine();
+assertEquals(res, 

[1/2] git commit: Fix resetAndTruncate:ing CompressionMetadata

2014-03-03 Thread marcuse
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.0 41d8a5f48 - ef20671c2


Fix resetAndTruncate:ing CompressionMetadata

Patch by kvaster, reviewed by marcuse for CASSANDRA-6791


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/64098f7d
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/64098f7d
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/64098f7d

Branch: refs/heads/cassandra-2.0
Commit: 64098f7d6f0b122448693a3c6da16af54c99013b
Parents: f08ae39
Author: Marcus Eriksson marc...@apache.org
Authored: Mon Mar 3 15:03:34 2014 +0100
Committer: Marcus Eriksson marc...@apache.org
Committed: Mon Mar 3 15:03:34 2014 +0100

--
 CHANGES.txt |  2 +-
 .../io/compress/CompressedSequentialWriter.java |  2 +-
 .../CompressedRandomAccessReaderTest.java   | 43 
 3 files changed, 45 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/64098f7d/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 780b528..b3c0a35 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -19,7 +19,7 @@
  * Support negative timestamps for CQL3 dates in query string (CASSANDRA-6718)
  * Avoid NPEs when receiving table changes for an unknown keyspace 
(CASSANDRA-5631)
  * Fix bootstrapping when there is no schema (CASSANDRA-6685)
-
+ * Fix truncating compression metadata (CASSANDRA-6791)
 
 1.2.15
  * Move handling of migration event source to solve bootstrap race 
(CASSANDRA-6648)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/64098f7d/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
--
diff --git 
a/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java 
b/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
index 00eb5a7..da55e83 100644
--- a/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
+++ b/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
@@ -231,7 +231,7 @@ public class CompressedSequentialWriter extends 
SequentialWriter
 
 // truncate data and index file
 truncate(chunkOffset);
-metadataWriter.resetAndTruncate(realMark.nextChunkIndex);
+metadataWriter.resetAndTruncate(realMark.nextChunkIndex - 1);
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/cassandra/blob/64098f7d/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
--
diff --git 
a/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
 
b/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
index 830c3e1..678a650 100644
--- 
a/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
+++ 
b/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
@@ -19,10 +19,12 @@
 package org.apache.cassandra.io.compress;
 
 import java.io.*;
+import java.util.Collections;
 import java.util.Random;
 
 import org.junit.Test;
 
+import org.apache.cassandra.exceptions.ConfigurationException;
 import org.apache.cassandra.io.sstable.CorruptSSTableException;
 import org.apache.cassandra.io.sstable.SSTableMetadata;
 import org.apache.cassandra.io.util.*;
@@ -95,6 +97,47 @@ public class CompressedRandomAccessReaderTest
 }
 
 @Test
+public void test6791() throws IOException, ConfigurationException
+{
+File f = File.createTempFile(compressed6791_, 3);
+String filename = f.getAbsolutePath();
+try
+{
+
+SSTableMetadata.Collector sstableMetadataCollector = 
SSTableMetadata.createCollector().replayPosition(null);
+CompressedSequentialWriter writer = new 
CompressedSequentialWriter(f, filename + .metadata, false, new 
CompressionParameters(SnappyCompressor.instance, 32, Collections.String, 
StringemptyMap()), sstableMetadataCollector);
+
+for (int i = 0; i  20; i++)
+writer.write(x.getBytes());
+
+FileMark mark = writer.mark();
+// write enough garbage to create new chunks:
+for (int i = 0; i  40; i++)
+writer.write(y.getBytes());
+
+writer.resetAndTruncate(mark);
+
+for (int i = 0; i  20; i++)
+writer.write(x.getBytes());
+writer.close();
+
+CompressedRandomAccessReader reader = 
CompressedRandomAccessReader.open(filename, new CompressionMetadata(filename + 
.metadata, f.length()), false);
+String res = reader.readLine();
+assertEquals(res, 

[1/3] git commit: Fix resetAndTruncate:ing CompressionMetadata

2014-03-03 Thread marcuse
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.1 043953127 - 56631e139


Fix resetAndTruncate:ing CompressionMetadata

Patch by kvaster, reviewed by marcuse for CASSANDRA-6791


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/64098f7d
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/64098f7d
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/64098f7d

Branch: refs/heads/cassandra-2.1
Commit: 64098f7d6f0b122448693a3c6da16af54c99013b
Parents: f08ae39
Author: Marcus Eriksson marc...@apache.org
Authored: Mon Mar 3 15:03:34 2014 +0100
Committer: Marcus Eriksson marc...@apache.org
Committed: Mon Mar 3 15:03:34 2014 +0100

--
 CHANGES.txt |  2 +-
 .../io/compress/CompressedSequentialWriter.java |  2 +-
 .../CompressedRandomAccessReaderTest.java   | 43 
 3 files changed, 45 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/64098f7d/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 780b528..b3c0a35 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -19,7 +19,7 @@
  * Support negative timestamps for CQL3 dates in query string (CASSANDRA-6718)
  * Avoid NPEs when receiving table changes for an unknown keyspace 
(CASSANDRA-5631)
  * Fix bootstrapping when there is no schema (CASSANDRA-6685)
-
+ * Fix truncating compression metadata (CASSANDRA-6791)
 
 1.2.15
  * Move handling of migration event source to solve bootstrap race 
(CASSANDRA-6648)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/64098f7d/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
--
diff --git 
a/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java 
b/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
index 00eb5a7..da55e83 100644
--- a/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
+++ b/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
@@ -231,7 +231,7 @@ public class CompressedSequentialWriter extends 
SequentialWriter
 
 // truncate data and index file
 truncate(chunkOffset);
-metadataWriter.resetAndTruncate(realMark.nextChunkIndex);
+metadataWriter.resetAndTruncate(realMark.nextChunkIndex - 1);
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/cassandra/blob/64098f7d/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
--
diff --git 
a/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
 
b/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
index 830c3e1..678a650 100644
--- 
a/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
+++ 
b/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
@@ -19,10 +19,12 @@
 package org.apache.cassandra.io.compress;
 
 import java.io.*;
+import java.util.Collections;
 import java.util.Random;
 
 import org.junit.Test;
 
+import org.apache.cassandra.exceptions.ConfigurationException;
 import org.apache.cassandra.io.sstable.CorruptSSTableException;
 import org.apache.cassandra.io.sstable.SSTableMetadata;
 import org.apache.cassandra.io.util.*;
@@ -95,6 +97,47 @@ public class CompressedRandomAccessReaderTest
 }
 
 @Test
+public void test6791() throws IOException, ConfigurationException
+{
+File f = File.createTempFile(compressed6791_, 3);
+String filename = f.getAbsolutePath();
+try
+{
+
+SSTableMetadata.Collector sstableMetadataCollector = 
SSTableMetadata.createCollector().replayPosition(null);
+CompressedSequentialWriter writer = new 
CompressedSequentialWriter(f, filename + .metadata, false, new 
CompressionParameters(SnappyCompressor.instance, 32, Collections.String, 
StringemptyMap()), sstableMetadataCollector);
+
+for (int i = 0; i  20; i++)
+writer.write(x.getBytes());
+
+FileMark mark = writer.mark();
+// write enough garbage to create new chunks:
+for (int i = 0; i  40; i++)
+writer.write(y.getBytes());
+
+writer.resetAndTruncate(mark);
+
+for (int i = 0; i  20; i++)
+writer.write(x.getBytes());
+writer.close();
+
+CompressedRandomAccessReader reader = 
CompressedRandomAccessReader.open(filename, new CompressionMetadata(filename + 
.metadata, f.length()), false);
+String res = reader.readLine();
+assertEquals(res, 

[1/4] git commit: Fix resetAndTruncate:ing CompressionMetadata

2014-03-03 Thread marcuse
Repository: cassandra
Updated Branches:
  refs/heads/trunk 2c8100af2 - db6b563f1


Fix resetAndTruncate:ing CompressionMetadata

Patch by kvaster, reviewed by marcuse for CASSANDRA-6791


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/64098f7d
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/64098f7d
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/64098f7d

Branch: refs/heads/trunk
Commit: 64098f7d6f0b122448693a3c6da16af54c99013b
Parents: f08ae39
Author: Marcus Eriksson marc...@apache.org
Authored: Mon Mar 3 15:03:34 2014 +0100
Committer: Marcus Eriksson marc...@apache.org
Committed: Mon Mar 3 15:03:34 2014 +0100

--
 CHANGES.txt |  2 +-
 .../io/compress/CompressedSequentialWriter.java |  2 +-
 .../CompressedRandomAccessReaderTest.java   | 43 
 3 files changed, 45 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/64098f7d/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 780b528..b3c0a35 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -19,7 +19,7 @@
  * Support negative timestamps for CQL3 dates in query string (CASSANDRA-6718)
  * Avoid NPEs when receiving table changes for an unknown keyspace 
(CASSANDRA-5631)
  * Fix bootstrapping when there is no schema (CASSANDRA-6685)
-
+ * Fix truncating compression metadata (CASSANDRA-6791)
 
 1.2.15
  * Move handling of migration event source to solve bootstrap race 
(CASSANDRA-6648)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/64098f7d/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
--
diff --git 
a/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java 
b/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
index 00eb5a7..da55e83 100644
--- a/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
+++ b/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java
@@ -231,7 +231,7 @@ public class CompressedSequentialWriter extends 
SequentialWriter
 
 // truncate data and index file
 truncate(chunkOffset);
-metadataWriter.resetAndTruncate(realMark.nextChunkIndex);
+metadataWriter.resetAndTruncate(realMark.nextChunkIndex - 1);
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/cassandra/blob/64098f7d/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
--
diff --git 
a/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
 
b/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
index 830c3e1..678a650 100644
--- 
a/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
+++ 
b/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
@@ -19,10 +19,12 @@
 package org.apache.cassandra.io.compress;
 
 import java.io.*;
+import java.util.Collections;
 import java.util.Random;
 
 import org.junit.Test;
 
+import org.apache.cassandra.exceptions.ConfigurationException;
 import org.apache.cassandra.io.sstable.CorruptSSTableException;
 import org.apache.cassandra.io.sstable.SSTableMetadata;
 import org.apache.cassandra.io.util.*;
@@ -95,6 +97,47 @@ public class CompressedRandomAccessReaderTest
 }
 
 @Test
+public void test6791() throws IOException, ConfigurationException
+{
+File f = File.createTempFile(compressed6791_, 3);
+String filename = f.getAbsolutePath();
+try
+{
+
+SSTableMetadata.Collector sstableMetadataCollector = 
SSTableMetadata.createCollector().replayPosition(null);
+CompressedSequentialWriter writer = new 
CompressedSequentialWriter(f, filename + .metadata, false, new 
CompressionParameters(SnappyCompressor.instance, 32, Collections.String, 
StringemptyMap()), sstableMetadataCollector);
+
+for (int i = 0; i  20; i++)
+writer.write(x.getBytes());
+
+FileMark mark = writer.mark();
+// write enough garbage to create new chunks:
+for (int i = 0; i  40; i++)
+writer.write(y.getBytes());
+
+writer.resetAndTruncate(mark);
+
+for (int i = 0; i  20; i++)
+writer.write(x.getBytes());
+writer.close();
+
+CompressedRandomAccessReader reader = 
CompressedRandomAccessReader.open(filename, new CompressionMetadata(filename + 
.metadata, f.length()), false);
+String res = reader.readLine();
+assertEquals(res,