[1/3] cassandra git commit: Keep the file open in trySkipCache

2015-11-10 Thread marcuse
Repository: cassandra
Updated Branches:
  refs/heads/trunk 3820e89d9 -> 55811e561


Keep the file open in trySkipCache

Patch by marcuse; reviewed by Stefania Alborghetti for CASSANDRA-10669


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

Branch: refs/heads/trunk
Commit: 49c9c01f5b100ca400fb6d3a5b1fab6721c7ee8b
Parents: d00fcbc
Author: Marcus Eriksson 
Authored: Mon Nov 9 11:17:48 2015 +0100
Committer: Marcus Eriksson 
Committed: Wed Nov 11 08:52:28 2015 +0100

--
 CHANGES.txt |  1 +
 .../cassandra/io/sstable/SSTableRewriter.java   |  5 +---
 .../org/apache/cassandra/utils/CLibrary.java| 29 ++--
 .../apache/cassandra/utils/CLibraryTest.java|  3 +-
 4 files changed, 17 insertions(+), 21 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/49c9c01f/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index ef21f9f..d271c95 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.1
+ * Keep the file open in trySkipCache (CASSANDRA-10669)
  * Updated trigger example (CASSANDRA-10257)
 Merged from 2.2:
  * (Hadoop) fix splits calculation (CASSANDRA-10640)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/49c9c01f/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
--
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java 
b/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
index f3885de..3632a60 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
@@ -59,7 +59,6 @@ public class SSTableRewriter extends 
Transactional.AbstractTransactional impleme
 // the set of final readers we will expose on commit
 private final LifecycleTransaction transaction; // the readers we are 
rewriting (updated as they are replaced)
 private final List preparedForCommit = new ArrayList<>();
-private final Map fileDescriptors = new HashMap<>(); 
// the file descriptors for each reader descriptor we are rewriting
 
 private long currentlyOpenedEarlyAt; // the position (in MB) in the target 
file we last (re)opened at
 
@@ -87,8 +86,6 @@ public class SSTableRewriter extends 
Transactional.AbstractTransactional impleme
 public SSTableRewriter(LifecycleTransaction transaction, long maxAge, 
boolean isOffline, long preemptiveOpenInterval, boolean keepOriginals)
 {
 this.transaction = transaction;
-for (SSTableReader sstable : this.transaction.originals())
-fileDescriptors.put(sstable.descriptor, 
CLibrary.getfd(sstable.getFilename()));
 this.maxAge = maxAge;
 this.isOffline = isOffline;
 this.keepOriginals = keepOriginals;
@@ -160,7 +157,7 @@ public class SSTableRewriter extends 
Transactional.AbstractTransactional impleme
 for (SSTableReader reader : transaction.originals())
 {
 RowIndexEntry index = reader.getPosition(key, 
SSTableReader.Operator.GE);
-
CLibrary.trySkipCache(fileDescriptors.get(reader.descriptor), 0, index == null 
? 0 : index.position, reader.getFilename());
+CLibrary.trySkipCache(reader.getFilename(), 0, index == 
null ? 0 : index.position);
 }
 }
 else

http://git-wip-us.apache.org/repos/asf/cassandra/blob/49c9c01f/src/java/org/apache/cassandra/utils/CLibrary.java
--
diff --git a/src/java/org/apache/cassandra/utils/CLibrary.java 
b/src/java/org/apache/cassandra/utils/CLibrary.java
index b4a1193..1235a58 100644
--- a/src/java/org/apache/cassandra/utils/CLibrary.java
+++ b/src/java/org/apache/cassandra/utils/CLibrary.java
@@ -17,7 +17,9 @@
  */
 package org.apache.cassandra.utils;
 
+import java.io.File;
 import java.io.FileDescriptor;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.lang.reflect.Field;
 import java.nio.channels.FileChannel;
@@ -148,7 +150,18 @@ public final class CLibrary
 
 public static void trySkipCache(String path, long offset, long len)
 {
-trySkipCache(getfd(path), offset, len, path);
+File f = new File(path);
+if (!f.exists())
+return;
+
+try (FileInputStream fis = new FileInputStream(f))
+{
+trySkipCache(getfd(fis.getChannel()), offset, len, path);
+

cassandra git commit: Keep the file open in trySkipCache

2015-11-10 Thread marcuse
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.0 d00fcbc43 -> 49c9c01f5


Keep the file open in trySkipCache

Patch by marcuse; reviewed by Stefania Alborghetti for CASSANDRA-10669


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

Branch: refs/heads/cassandra-3.0
Commit: 49c9c01f5b100ca400fb6d3a5b1fab6721c7ee8b
Parents: d00fcbc
Author: Marcus Eriksson 
Authored: Mon Nov 9 11:17:48 2015 +0100
Committer: Marcus Eriksson 
Committed: Wed Nov 11 08:52:28 2015 +0100

--
 CHANGES.txt |  1 +
 .../cassandra/io/sstable/SSTableRewriter.java   |  5 +---
 .../org/apache/cassandra/utils/CLibrary.java| 29 ++--
 .../apache/cassandra/utils/CLibraryTest.java|  3 +-
 4 files changed, 17 insertions(+), 21 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/49c9c01f/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index ef21f9f..d271c95 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.1
+ * Keep the file open in trySkipCache (CASSANDRA-10669)
  * Updated trigger example (CASSANDRA-10257)
 Merged from 2.2:
  * (Hadoop) fix splits calculation (CASSANDRA-10640)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/49c9c01f/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
--
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java 
b/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
index f3885de..3632a60 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
@@ -59,7 +59,6 @@ public class SSTableRewriter extends 
Transactional.AbstractTransactional impleme
 // the set of final readers we will expose on commit
 private final LifecycleTransaction transaction; // the readers we are 
rewriting (updated as they are replaced)
 private final List preparedForCommit = new ArrayList<>();
-private final Map fileDescriptors = new HashMap<>(); 
// the file descriptors for each reader descriptor we are rewriting
 
 private long currentlyOpenedEarlyAt; // the position (in MB) in the target 
file we last (re)opened at
 
@@ -87,8 +86,6 @@ public class SSTableRewriter extends 
Transactional.AbstractTransactional impleme
 public SSTableRewriter(LifecycleTransaction transaction, long maxAge, 
boolean isOffline, long preemptiveOpenInterval, boolean keepOriginals)
 {
 this.transaction = transaction;
-for (SSTableReader sstable : this.transaction.originals())
-fileDescriptors.put(sstable.descriptor, 
CLibrary.getfd(sstable.getFilename()));
 this.maxAge = maxAge;
 this.isOffline = isOffline;
 this.keepOriginals = keepOriginals;
@@ -160,7 +157,7 @@ public class SSTableRewriter extends 
Transactional.AbstractTransactional impleme
 for (SSTableReader reader : transaction.originals())
 {
 RowIndexEntry index = reader.getPosition(key, 
SSTableReader.Operator.GE);
-
CLibrary.trySkipCache(fileDescriptors.get(reader.descriptor), 0, index == null 
? 0 : index.position, reader.getFilename());
+CLibrary.trySkipCache(reader.getFilename(), 0, index == 
null ? 0 : index.position);
 }
 }
 else

http://git-wip-us.apache.org/repos/asf/cassandra/blob/49c9c01f/src/java/org/apache/cassandra/utils/CLibrary.java
--
diff --git a/src/java/org/apache/cassandra/utils/CLibrary.java 
b/src/java/org/apache/cassandra/utils/CLibrary.java
index b4a1193..1235a58 100644
--- a/src/java/org/apache/cassandra/utils/CLibrary.java
+++ b/src/java/org/apache/cassandra/utils/CLibrary.java
@@ -17,7 +17,9 @@
  */
 package org.apache.cassandra.utils;
 
+import java.io.File;
 import java.io.FileDescriptor;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.lang.reflect.Field;
 import java.nio.channels.FileChannel;
@@ -148,7 +150,18 @@ public final class CLibrary
 
 public static void trySkipCache(String path, long offset, long len)
 {
-trySkipCache(getfd(path), offset, len, path);
+File f = new File(path);
+if (!f.exists())
+return;
+
+try (FileInputStream fis = new FileInputStream(f))
+{
+trySkipCache(getfd(fis.getChannel()), offset, 

[1/2] cassandra git commit: Keep the file open in trySkipCache

2015-11-10 Thread marcuse
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.1 11b073e63 -> 6f7b38987


Keep the file open in trySkipCache

Patch by marcuse; reviewed by Stefania Alborghetti for CASSANDRA-10669


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

Branch: refs/heads/cassandra-3.1
Commit: 49c9c01f5b100ca400fb6d3a5b1fab6721c7ee8b
Parents: d00fcbc
Author: Marcus Eriksson 
Authored: Mon Nov 9 11:17:48 2015 +0100
Committer: Marcus Eriksson 
Committed: Wed Nov 11 08:52:28 2015 +0100

--
 CHANGES.txt |  1 +
 .../cassandra/io/sstable/SSTableRewriter.java   |  5 +---
 .../org/apache/cassandra/utils/CLibrary.java| 29 ++--
 .../apache/cassandra/utils/CLibraryTest.java|  3 +-
 4 files changed, 17 insertions(+), 21 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/49c9c01f/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index ef21f9f..d271c95 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.1
+ * Keep the file open in trySkipCache (CASSANDRA-10669)
  * Updated trigger example (CASSANDRA-10257)
 Merged from 2.2:
  * (Hadoop) fix splits calculation (CASSANDRA-10640)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/49c9c01f/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
--
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java 
b/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
index f3885de..3632a60 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
@@ -59,7 +59,6 @@ public class SSTableRewriter extends 
Transactional.AbstractTransactional impleme
 // the set of final readers we will expose on commit
 private final LifecycleTransaction transaction; // the readers we are 
rewriting (updated as they are replaced)
 private final List preparedForCommit = new ArrayList<>();
-private final Map fileDescriptors = new HashMap<>(); 
// the file descriptors for each reader descriptor we are rewriting
 
 private long currentlyOpenedEarlyAt; // the position (in MB) in the target 
file we last (re)opened at
 
@@ -87,8 +86,6 @@ public class SSTableRewriter extends 
Transactional.AbstractTransactional impleme
 public SSTableRewriter(LifecycleTransaction transaction, long maxAge, 
boolean isOffline, long preemptiveOpenInterval, boolean keepOriginals)
 {
 this.transaction = transaction;
-for (SSTableReader sstable : this.transaction.originals())
-fileDescriptors.put(sstable.descriptor, 
CLibrary.getfd(sstable.getFilename()));
 this.maxAge = maxAge;
 this.isOffline = isOffline;
 this.keepOriginals = keepOriginals;
@@ -160,7 +157,7 @@ public class SSTableRewriter extends 
Transactional.AbstractTransactional impleme
 for (SSTableReader reader : transaction.originals())
 {
 RowIndexEntry index = reader.getPosition(key, 
SSTableReader.Operator.GE);
-
CLibrary.trySkipCache(fileDescriptors.get(reader.descriptor), 0, index == null 
? 0 : index.position, reader.getFilename());
+CLibrary.trySkipCache(reader.getFilename(), 0, index == 
null ? 0 : index.position);
 }
 }
 else

http://git-wip-us.apache.org/repos/asf/cassandra/blob/49c9c01f/src/java/org/apache/cassandra/utils/CLibrary.java
--
diff --git a/src/java/org/apache/cassandra/utils/CLibrary.java 
b/src/java/org/apache/cassandra/utils/CLibrary.java
index b4a1193..1235a58 100644
--- a/src/java/org/apache/cassandra/utils/CLibrary.java
+++ b/src/java/org/apache/cassandra/utils/CLibrary.java
@@ -17,7 +17,9 @@
  */
 package org.apache.cassandra.utils;
 
+import java.io.File;
 import java.io.FileDescriptor;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.lang.reflect.Field;
 import java.nio.channels.FileChannel;
@@ -148,7 +150,18 @@ public final class CLibrary
 
 public static void trySkipCache(String path, long offset, long len)
 {
-trySkipCache(getfd(path), offset, len, path);
+File f = new File(path);
+if (!f.exists())
+return;
+
+try (FileInputStream fis = new FileInputStream(f))
+{
+trySkipCache(getfd(fis.getChannel()), offset,