This is an automated email from the ASF dual-hosted git repository. jmckenzie pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git
The following commit(s) were added to refs/heads/trunk by this push: new 45f4f8c1e8 Users of NativeLibrary should handle lack of JNA appropriately when running in client mode 45f4f8c1e8 is described below commit 45f4f8c1e89e4b221b569ff3bd3e78675eff7747 Author: Josh McKenzie <jmcken...@apache.org> AuthorDate: Tue Aug 2 14:30:06 2022 -0400 Users of NativeLibrary should handle lack of JNA appropriately when running in client mode Patch by Doug Rohrer; reviewd by Josh McKenzie and Caleb Rackliffe for CASSANDRA-17794 Co-authored-by: Doug Rohrer <droh...@apple.com> Co-authored-by: Josh McKenzie <jmcken...@apache.org> --- CHANGES.txt | 1 + .../apache/cassandra/db/lifecycle/LogReplica.java | 23 ++++++++++++++++++++-- .../org/apache/cassandra/hints/HintsCatalog.java | 7 ++++++- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index c802607f42..3342318ea2 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 4.2 + * Users of NativeLibrary should handle lack of JNA appropriately when running in client mode (CASSANDRA-17794) * Warn on unknown directories found in system keyspace directory rather than kill node during startup checks (CASSANDRA-17777) * Log duplicate rows sharing a partition key found in verify and scrub (CASSANDRA-17789) * Add separate thread pool for Secondary Index building so it doesn't block compactions (CASSANDRA-17781) diff --git a/src/java/org/apache/cassandra/db/lifecycle/LogReplica.java b/src/java/org/apache/cassandra/db/lifecycle/LogReplica.java index 1ea8b832e0..073ac7c61c 100644 --- a/src/java/org/apache/cassandra/db/lifecycle/LogReplica.java +++ b/src/java/org/apache/cassandra/db/lifecycle/LogReplica.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.Map; import java.io.IOException; +import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.io.util.File; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -58,7 +59,16 @@ final class LogReplica implements AutoCloseable { int folderFD = NativeLibrary.tryOpenDirectory(directory.path()); if (folderFD == -1 && REQUIRE_FD) - throw new FSReadError(new IOException(String.format("Invalid folder descriptor trying to create log replica %s", directory.path())), directory.path()); + { + if (DatabaseDescriptor.isClientInitialized()) + { + logger.warn("Invalid folder descriptor trying to create log replica {}. Continuing without Native I/O support.", directory.path()); + } + else + { + throw new FSReadError(new IOException(String.format("Invalid folder descriptor trying to create log replica %s", directory.path())), directory.path()); + } + } return new LogReplica(new File(fileName), folderFD); } @@ -67,7 +77,16 @@ final class LogReplica implements AutoCloseable { int folderFD = NativeLibrary.tryOpenDirectory(file.parent().path()); if (folderFD == -1) - throw new FSReadError(new IOException(String.format("Invalid folder descriptor trying to create log replica %s", file.parent().path())), file.parent().path()); + { + if (DatabaseDescriptor.isClientInitialized()) + { + logger.warn("Invalid folder descriptor trying to create log replica {}. Continuing without Native I/O support.", file.parentPath()); + } + else + { + throw new FSReadError(new IOException(String.format("Invalid folder descriptor trying to create log replica %s", file.parent().path())), file.parent().path()); + } + } return new LogReplica(file, folderFD); } diff --git a/src/java/org/apache/cassandra/hints/HintsCatalog.java b/src/java/org/apache/cassandra/hints/HintsCatalog.java index 859252f0ca..ecde896b90 100644 --- a/src/java/org/apache/cassandra/hints/HintsCatalog.java +++ b/src/java/org/apache/cassandra/hints/HintsCatalog.java @@ -26,10 +26,11 @@ import java.util.stream.Stream; import javax.annotation.Nullable; import com.google.common.collect.ImmutableMap; -import org.apache.cassandra.io.util.File; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.apache.cassandra.config.DatabaseDescriptor; +import org.apache.cassandra.io.util.File; import org.apache.cassandra.io.FSError; import org.apache.cassandra.io.FSReadError; import org.apache.cassandra.io.FSWriteError; @@ -161,6 +162,10 @@ final class HintsCatalog FileUtils.handleFSErrorAndPropagate(e); } } + else if (DatabaseDescriptor.isClientInitialized()) + { + logger.warn("Unable to open hint directory using Native library. Skipping sync."); + } else { logger.error("Unable to open directory {}", hintsDirectory.absolutePath()); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org