[1/3] cassandra git commit: Keep the file open in trySkipCache
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 ErikssonAuthored: 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
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 ErikssonAuthored: 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
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 ErikssonAuthored: 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,