This is an automated email from the ASF dual-hosted git repository. dcapwell pushed a commit to branch cassandra-4.1 in repository https://gitbox.apache.org/repos/asf/cassandra.git
The following commit(s) were added to refs/heads/cassandra-4.1 by this push: new d5b1483703 Incompatible file system thrown while running Simulator d5b1483703 is described below commit d5b1483703b53c02fb0e616e58107afb814f9f81 Author: David Capwell <dcapw...@apache.org> AuthorDate: Tue Mar 14 10:36:38 2023 -0700 Incompatible file system thrown while running Simulator patch by David Capwell; reviewed by Brandon Williams, Caleb Rackliffe for CASSANDRA-18320 --- checkstyle.xml | 2 +- .../apache/cassandra/audit/AuditLogOptions.java | 4 +-- .../org/apache/cassandra/audit/BinAuditLogger.java | 4 +-- .../cassandra/hadoop/cql3/CqlConfigHelper.java | 6 ++-- src/java/org/apache/cassandra/io/util/File.java | 9 ++++-- .../org/apache/cassandra/io/util/FileUtils.java | 3 +- .../security/FileBasedSslContextFactory.java | 5 ++- .../apache/cassandra/security/JKSKeyProvider.java | 4 +-- .../security/PEMBasedSslContextFactory.java | 3 +- .../apache/cassandra/service/CassandraDaemon.java | 5 ++- .../service/FileSystemOwnershipCheck.java | 3 +- .../apache/cassandra/service/StartupChecks.java | 7 ++-- .../apache/cassandra/service/StorageService.java | 3 +- .../cassandra/service/snapshot/SnapshotLoader.java | 3 +- .../cassandra/service/snapshot/TableSnapshot.java | 3 +- .../org/apache/cassandra/tools/HashPassword.java | 5 +-- .../cassandra/tools/SSTableRepairedAtSetter.java | 3 +- .../apache/cassandra/tools/StandaloneScrubber.java | 3 +- .../cassandra/simulator/SimulationException.java | 37 ++++++++++++++++++++++ .../cassandra/simulator/SimulationRunner.java | 7 +++- 20 files changed, 78 insertions(+), 41 deletions(-) diff --git a/checkstyle.xml b/checkstyle.xml index 06e0cddd90..053cc735ab 100644 --- a/checkstyle.xml +++ b/checkstyle.xml @@ -93,7 +93,7 @@ </module> <module name="IllegalImport"> <property name="illegalPkgs" value="junit.framework"/> - <property name="illegalClasses" value="java.io.File,java.io.FileInputStream,java.io.FileOutputStream,java.io.FileReader,java.io.FileWriter,java.io.RandomAccessFile,java.util.concurrent.Semaphore,java.util.concurrent.CountDownLatch,java.util.concurrent.Executors,java.util.concurrent.LinkedBlockingQueue,java.util.concurrent.SynchronousQueue,java.util.concurrent.ArrayBlockingQueue,com.google.common.util.concurrent.Futures,java.util.concurrent.CompletableFuture,io.netty.util.concurrent [...] + <property name="illegalClasses" value="java.io.File,java.io.FileInputStream,java.io.FileOutputStream,java.io.FileReader,java.io.FileWriter,java.io.RandomAccessFile,java.util.concurrent.Semaphore,java.util.concurrent.CountDownLatch,java.util.concurrent.Executors,java.util.concurrent.LinkedBlockingQueue,java.util.concurrent.SynchronousQueue,java.util.concurrent.ArrayBlockingQueue,com.google.common.util.concurrent.Futures,java.util.concurrent.CompletableFuture,io.netty.util.concurrent [...] </module> <module name="IllegalInstantiation"> <property name="classes" value="java.io.File,java.lang.Thread,java.util.concurrent.FutureTask,java.util.concurrent.Semaphore,java.util.concurrent.CountDownLatch,java.util.concurrent.ScheduledThreadPoolExecutor,java.util.concurrent.ThreadPoolExecutor,java.util.concurrent.ForkJoinPool,java.lang.OutOfMemoryError"/> diff --git a/src/java/org/apache/cassandra/audit/AuditLogOptions.java b/src/java/org/apache/cassandra/audit/AuditLogOptions.java index 8ec066f5b5..e9e31c9040 100644 --- a/src/java/org/apache/cassandra/audit/AuditLogOptions.java +++ b/src/java/org/apache/cassandra/audit/AuditLogOptions.java @@ -18,7 +18,6 @@ package org.apache.cassandra.audit; import java.nio.file.Path; -import java.nio.file.Paths; import java.util.Arrays; import java.util.Collections; import java.util.Map; @@ -32,6 +31,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.cassandra.config.CassandraRelevantProperties; import org.apache.cassandra.config.ParameterizedClass; import org.apache.cassandra.exceptions.ConfigurationException; +import org.apache.cassandra.io.util.File; import org.apache.cassandra.utils.binlog.BinLogOptions; public class AuditLogOptions extends BinLogOptions @@ -52,7 +52,7 @@ public class AuditLogOptions extends BinLogOptions { String auditLogDir = CassandraRelevantProperties.LOG_DIR_AUDIT.getString(); String logDir = CassandraRelevantProperties.LOG_DIR.getString() + "/audit"; - Path path = auditLogDir == null ? Paths.get(logDir) : Paths.get(auditLogDir); + Path path = auditLogDir == null ? File.getPath(logDir) : File.getPath(auditLogDir); audit_logs_dir = path.normalize().toString(); } diff --git a/src/java/org/apache/cassandra/audit/BinAuditLogger.java b/src/java/org/apache/cassandra/audit/BinAuditLogger.java index 7768868742..607d9fee0b 100644 --- a/src/java/org/apache/cassandra/audit/BinAuditLogger.java +++ b/src/java/org/apache/cassandra/audit/BinAuditLogger.java @@ -17,7 +17,6 @@ */ package org.apache.cassandra.audit; -import java.nio.file.Paths; import java.util.Map; import com.google.common.annotations.VisibleForTesting; @@ -27,6 +26,7 @@ import org.slf4j.LoggerFactory; import net.openhft.chronicle.wire.WireOut; import org.apache.cassandra.config.DatabaseDescriptor; +import org.apache.cassandra.io.util.File; import org.apache.cassandra.utils.ObjectSizes; import org.apache.cassandra.utils.binlog.BinLog; import org.apache.cassandra.utils.concurrent.WeightedQueue; @@ -42,7 +42,7 @@ public class BinAuditLogger implements IAuditLogger public BinAuditLogger(AuditLogOptions auditLoggingOptions) { - this.binLog = new BinLog.Builder().path(Paths.get(auditLoggingOptions.audit_logs_dir)) + this.binLog = new BinLog.Builder().path(File.getPath(auditLoggingOptions.audit_logs_dir)) .rollCycle(auditLoggingOptions.roll_cycle) .blocking(auditLoggingOptions.block) .maxQueueWeight(auditLoggingOptions.max_queue_weight) diff --git a/src/java/org/apache/cassandra/hadoop/cql3/CqlConfigHelper.java b/src/java/org/apache/cassandra/hadoop/cql3/CqlConfigHelper.java index f9a6f3ae0f..998a754692 100644 --- a/src/java/org/apache/cassandra/hadoop/cql3/CqlConfigHelper.java +++ b/src/java/org/apache/cassandra/hadoop/cql3/CqlConfigHelper.java @@ -20,7 +20,6 @@ package org.apache.cassandra.hadoop.cql3; * */ import java.nio.file.Files; -import java.nio.file.Paths; import java.io.InputStream; import java.io.IOException; import java.security.KeyManagementException; @@ -52,6 +51,7 @@ import com.datastax.driver.core.QueryOptions; import com.datastax.driver.core.SSLOptions; import com.datastax.driver.core.SocketOptions; import org.apache.cassandra.hadoop.ConfigHelper; +import org.apache.cassandra.io.util.File; import org.apache.hadoop.conf.Configuration; @@ -625,7 +625,7 @@ public class CqlConfigHelper TrustManagerFactory tmf = null; if (truststorePath.isPresent()) { - try (InputStream tsf = Files.newInputStream(Paths.get(truststorePath.get()))) + try (InputStream tsf = Files.newInputStream(File.getPath(truststorePath.get()))) { KeyStore ts = KeyStore.getInstance("JKS"); ts.load(tsf, truststorePassword.isPresent() ? truststorePassword.get().toCharArray() : null); @@ -637,7 +637,7 @@ public class CqlConfigHelper KeyManagerFactory kmf = null; if (keystorePath.isPresent()) { - try (InputStream ksf = Files.newInputStream(Paths.get(keystorePath.get()))) + try (InputStream ksf = Files.newInputStream(File.getPath(keystorePath.get()))) { KeyStore ks = KeyStore.getInstance("JKS"); ks.load(ksf, keystorePassword.isPresent() ? keystorePassword.get().toCharArray() : null); diff --git a/src/java/org/apache/cassandra/io/util/File.java b/src/java/org/apache/cassandra/io/util/File.java index 71f8fc589e..1f48707910 100644 --- a/src/java/org/apache/cassandra/io/util/File.java +++ b/src/java/org/apache/cassandra/io/util/File.java @@ -47,7 +47,6 @@ import static org.apache.cassandra.utils.Throwables.maybeFail; * * TODO codebase probably should not use tryList, as unexpected exceptions are hidden; * probably want to introduce e.g. listIfExists - * TODO codebase probably should not use Paths.get() to ensure we can override the filesystem */ public class File implements Comparable<File> { @@ -118,7 +117,7 @@ public class File implements Comparable<File> */ public File(URI path) { - this(Paths.get(path)); + this(Paths.get(path)); //TODO unsafe if uri is file:// as it uses default file system and not File.filesystem if (!path.isAbsolute() || path.isOpaque()) throw new IllegalArgumentException(); } @@ -133,6 +132,12 @@ public class File implements Comparable<File> this.path = path; } + + public static Path getPath(String first, String... more) + { + return filesystem.getPath(first, more); + } + /** * Try to delete the file, returning true iff it was deleted by us. Does not ordinarily throw exceptions. */ diff --git a/src/java/org/apache/cassandra/io/util/FileUtils.java b/src/java/org/apache/cassandra/io/util/FileUtils.java index 6f055f7c9c..01f1f18204 100644 --- a/src/java/org/apache/cassandra/io/util/FileUtils.java +++ b/src/java/org/apache/cassandra/io/util/FileUtils.java @@ -35,7 +35,6 @@ import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.NoSuchFileException; import java.nio.file.Path; -import java.nio.file.Paths; import java.nio.file.SimpleFileVisitor; import java.nio.file.StandardCopyOption; import java.nio.file.StandardOpenOption; @@ -226,7 +225,7 @@ public final class FileUtils { try { - Files.copy(Paths.get(from), Paths.get(to)); + Files.copy(File.getPath(from), File.getPath(to)); } catch (IOException e) { diff --git a/src/java/org/apache/cassandra/security/FileBasedSslContextFactory.java b/src/java/org/apache/cassandra/security/FileBasedSslContextFactory.java index 3d47509fd3..aee9ba1ab6 100644 --- a/src/java/org/apache/cassandra/security/FileBasedSslContextFactory.java +++ b/src/java/org/apache/cassandra/security/FileBasedSslContextFactory.java @@ -20,7 +20,6 @@ package org.apache.cassandra.security; import java.io.InputStream; import java.nio.file.Files; -import java.nio.file.Paths; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.cert.X509Certificate; @@ -130,7 +129,7 @@ abstract public class FileBasedSslContextFactory extends AbstractSslContextFacto protected KeyManagerFactory buildKeyManagerFactory() throws SSLException { - try (InputStream ksf = Files.newInputStream(Paths.get(keystore))) + try (InputStream ksf = Files.newInputStream(File.getPath(keystore))) { final String algorithm = this.algorithm == null ? KeyManagerFactory.getDefaultAlgorithm() : this.algorithm; KeyManagerFactory kmf = KeyManagerFactory.getInstance(algorithm); @@ -159,7 +158,7 @@ abstract public class FileBasedSslContextFactory extends AbstractSslContextFacto @Override protected TrustManagerFactory buildTrustManagerFactory() throws SSLException { - try (InputStream tsf = Files.newInputStream(Paths.get(truststore))) + try (InputStream tsf = Files.newInputStream(File.getPath(truststore))) { final String algorithm = this.algorithm == null ? TrustManagerFactory.getDefaultAlgorithm() : this.algorithm; TrustManagerFactory tmf = TrustManagerFactory.getInstance(algorithm); diff --git a/src/java/org/apache/cassandra/security/JKSKeyProvider.java b/src/java/org/apache/cassandra/security/JKSKeyProvider.java index cea7b23435..2fddf5e55f 100644 --- a/src/java/org/apache/cassandra/security/JKSKeyProvider.java +++ b/src/java/org/apache/cassandra/security/JKSKeyProvider.java @@ -18,7 +18,6 @@ package org.apache.cassandra.security; import java.nio.file.Files; -import java.nio.file.Paths; import java.io.InputStream; import java.io.IOException; import java.security.Key; @@ -28,6 +27,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.cassandra.config.TransparentDataEncryptionOptions; +import org.apache.cassandra.io.util.File; /** * A {@code KeyProvider} that retrieves keys from a java keystore. @@ -48,7 +48,7 @@ public class JKSKeyProvider implements KeyProvider { this.options = options; logger.info("initializing keystore from file {}", options.get(PROP_KEYSTORE)); - try (InputStream inputStream = Files.newInputStream(Paths.get(options.get(PROP_KEYSTORE)))) + try (InputStream inputStream = Files.newInputStream(File.getPath(options.get(PROP_KEYSTORE)))) { store = KeyStore.getInstance(options.get(PROP_KEYSTORE_TYPE)); store.load(inputStream, options.get(PROP_KEYSTORE_PW).toCharArray()); diff --git a/src/java/org/apache/cassandra/security/PEMBasedSslContextFactory.java b/src/java/org/apache/cassandra/security/PEMBasedSslContextFactory.java index 8ecbec59ef..fd66a85296 100644 --- a/src/java/org/apache/cassandra/security/PEMBasedSslContextFactory.java +++ b/src/java/org/apache/cassandra/security/PEMBasedSslContextFactory.java @@ -20,7 +20,6 @@ package org.apache.cassandra.security; import java.io.IOException; import java.nio.file.Files; -import java.nio.file.Paths; import java.security.GeneralSecurityException; import java.security.KeyStore; import java.security.PrivateKey; @@ -279,7 +278,7 @@ public final class PEMBasedSslContextFactory extends FileBasedSslContextFactory private String readPEMFile(String file) throws IOException { - return new String(Files.readAllBytes(Paths.get(file))); + return new String(Files.readAllBytes(File.getPath(file))); } /** diff --git a/src/java/org/apache/cassandra/service/CassandraDaemon.java b/src/java/org/apache/cassandra/service/CassandraDaemon.java index 0029d2974b..f1bca6607e 100644 --- a/src/java/org/apache/cassandra/service/CassandraDaemon.java +++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java @@ -25,7 +25,6 @@ import java.net.URL; import java.net.UnknownHostException; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import java.util.Arrays; import java.util.List; import java.util.concurrent.TimeUnit; @@ -529,7 +528,7 @@ public class CassandraDaemon // the system keyspace location configured by the user (upgrade to 4.0) // 3) The system data are stored in the first data location and need to be moved to // the system keyspace location configured by the user (system_data_file_directory has been configured) - Path target = Paths.get(DatabaseDescriptor.getLocalSystemKeyspacesDataFileLocations()[0]); + Path target = File.getPath(DatabaseDescriptor.getLocalSystemKeyspacesDataFileLocations()[0]); String[] nonLocalSystemKeyspacesFileLocations = DatabaseDescriptor.getNonLocalSystemKeyspacesDataFileLocations(); String[] sources = DatabaseDescriptor.useSpecificLocationForLocalSystemData() ? nonLocalSystemKeyspacesFileLocations @@ -539,7 +538,7 @@ public class CassandraDaemon for (String source : sources) { - Path dataFileLocation = Paths.get(source); + Path dataFileLocation = File.getPath(source); if (!Files.exists(dataFileLocation)) continue; diff --git a/src/java/org/apache/cassandra/service/FileSystemOwnershipCheck.java b/src/java/org/apache/cassandra/service/FileSystemOwnershipCheck.java index 04d87c917b..3d69c9e763 100644 --- a/src/java/org/apache/cassandra/service/FileSystemOwnershipCheck.java +++ b/src/java/org/apache/cassandra/service/FileSystemOwnershipCheck.java @@ -21,7 +21,6 @@ package org.apache.cassandra.service; import java.io.BufferedReader; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import java.util.*; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -139,7 +138,7 @@ public class FileSystemOwnershipCheck implements StartupCheck { logger.info("Checking for fs ownership details in file hierarchy for {}", dataDir); int foundFiles = 0; - Path dir = Paths.get(dataDir).normalize(); + Path dir = File.getPath(dataDir).normalize(); do { File tokenFile = resolve(dir, tokenFilename); diff --git a/src/java/org/apache/cassandra/service/StartupChecks.java b/src/java/org/apache/cassandra/service/StartupChecks.java index 2ab5381697..0aacc02ece 100644 --- a/src/java/org/apache/cassandra/service/StartupChecks.java +++ b/src/java/org/apache/cassandra/service/StartupChecks.java @@ -26,7 +26,6 @@ import java.nio.file.FileVisitResult; import java.nio.file.FileVisitor; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import java.nio.file.SimpleFileVisitor; import java.nio.file.attribute.BasicFileAttributes; import java.util.ArrayList; @@ -386,7 +385,7 @@ public class StartupChecks { try { - Path p = Paths.get(dataDirectory); + Path p = File.getPath(dataDirectory); FileStore fs = Files.getFileStore(p); String blockDirectory = fs.name(); @@ -455,7 +454,7 @@ public class StartupChecks private long getMaxMapCount() { - final Path path = Paths.get(MAX_MAP_COUNT_PATH); + final Path path = File.getPath(MAX_MAP_COUNT_PATH); try (final BufferedReader bufferedReader = Files.newBufferedReader(path)) { final String data = bufferedReader.readLine(); @@ -738,7 +737,7 @@ public class StartupChecks String deviceName = blockDirComponents[2].replaceAll("[0-9]*$", ""); if (StringUtils.isNotEmpty(deviceName)) { - readAheadKBPath = Paths.get(String.format(READ_AHEAD_KB_SETTING_PATH, deviceName)); + readAheadKBPath = File.getPath(String.format(READ_AHEAD_KB_SETTING_PATH, deviceName)); } } } diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java index dd06ac41b7..6d0d24eb94 100644 --- a/src/java/org/apache/cassandra/service/StorageService.java +++ b/src/java/org/apache/cassandra/service/StorageService.java @@ -26,7 +26,6 @@ import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.UnknownHostException; import java.nio.ByteBuffer; -import java.nio.file.Paths; import java.time.Instant; import java.util.*; import java.util.Map.Entry; @@ -6398,7 +6397,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE maxArchiveRetries = maxArchiveRetries != Integer.MIN_VALUE ? maxArchiveRetries : fqlOptions.max_archive_retries; Preconditions.checkNotNull(path, "cassandra.yaml did not set log_dir and not set as parameter"); - FullQueryLogger.instance.enableWithoutClean(Paths.get(path), rollCycle, blocking, maxQueueWeight, maxLogSize, archiveCommand, maxArchiveRetries); + FullQueryLogger.instance.enableWithoutClean(File.getPath(path), rollCycle, blocking, maxQueueWeight, maxLogSize, archiveCommand, maxArchiveRetries); } @Override diff --git a/src/java/org/apache/cassandra/service/snapshot/SnapshotLoader.java b/src/java/org/apache/cassandra/service/snapshot/SnapshotLoader.java index 5f2d37e270..15b70a1cb9 100644 --- a/src/java/org/apache/cassandra/service/snapshot/SnapshotLoader.java +++ b/src/java/org/apache/cassandra/service/snapshot/SnapshotLoader.java @@ -23,7 +23,6 @@ import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.NoSuchFileException; import java.nio.file.Path; -import java.nio.file.Paths; import java.nio.file.SimpleFileVisitor; import java.nio.file.attribute.BasicFileAttributes; import java.util.Arrays; @@ -66,7 +65,7 @@ public class SnapshotLoader public SnapshotLoader(String[] dataDirectories) { - this(Arrays.stream(dataDirectories).map(Paths::get).collect(Collectors.toList())); + this(Arrays.stream(dataDirectories).map(File::getPath).collect(Collectors.toList())); } public SnapshotLoader(Collection<Path> dataDirs) diff --git a/src/java/org/apache/cassandra/service/snapshot/TableSnapshot.java b/src/java/org/apache/cassandra/service/snapshot/TableSnapshot.java index 476bad7ab3..0cfcfea08f 100644 --- a/src/java/org/apache/cassandra/service/snapshot/TableSnapshot.java +++ b/src/java/org/apache/cassandra/service/snapshot/TableSnapshot.java @@ -20,7 +20,6 @@ package org.apache.cassandra.service.snapshot; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import java.time.Instant; import java.util.Collection; import java.util.HashSet; @@ -302,7 +301,7 @@ public class TableSnapshot if (Directories.isSecondaryIndexFolder(snapshotFilePath.getParent())) { // Snapshot file structure format is {data_dir}/snapshots/{snapshot_name}/.{index}/{sstable-component}.db - liveDir = Paths.get(liveDir.getParent().toString(), snapshotFilePath.getParent().getFileName().toString()); + liveDir = File.getPath(liveDir.getParent().toString(), snapshotFilePath.getParent().getFileName().toString()); } return new File(liveDir.toString(), snapshotFilePath.getFileName().toString()); } diff --git a/src/java/org/apache/cassandra/tools/HashPassword.java b/src/java/org/apache/cassandra/tools/HashPassword.java index c4b63148ff..ddc0a722f2 100644 --- a/src/java/org/apache/cassandra/tools/HashPassword.java +++ b/src/java/org/apache/cassandra/tools/HashPassword.java @@ -22,7 +22,6 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; @@ -33,6 +32,8 @@ import org.apache.commons.cli.OptionGroup; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.lang3.StringUtils; + +import org.apache.cassandra.io.util.File; import org.mindrot.jbcrypt.BCrypt; public class HashPassword @@ -83,7 +84,7 @@ public class HashPassword { try { - Path file = Paths.get(input); + Path file = File.getPath(input); fileInput = Files.readAllBytes(file); } catch (IOException e) diff --git a/src/java/org/apache/cassandra/tools/SSTableRepairedAtSetter.java b/src/java/org/apache/cassandra/tools/SSTableRepairedAtSetter.java index 62dd76ee56..1289e7e7cc 100644 --- a/src/java/org/apache/cassandra/tools/SSTableRepairedAtSetter.java +++ b/src/java/org/apache/cassandra/tools/SSTableRepairedAtSetter.java @@ -22,7 +22,6 @@ import java.io.IOException; import java.io.PrintStream; import java.nio.charset.Charset; import java.nio.file.Files; -import java.nio.file.Paths; import java.nio.file.attribute.FileTime; import java.util.Arrays; import java.util.List; @@ -73,7 +72,7 @@ public class SSTableRepairedAtSetter List<String> fileNames; if (args[2].equals("-f")) { - fileNames = Files.readAllLines(Paths.get(args[3]), Charset.defaultCharset()); + fileNames = Files.readAllLines(File.getPath(args[3]), Charset.defaultCharset()); } else { diff --git a/src/java/org/apache/cassandra/tools/StandaloneScrubber.java b/src/java/org/apache/cassandra/tools/StandaloneScrubber.java index d6e99b9c2f..4484b6947b 100644 --- a/src/java/org/apache/cassandra/tools/StandaloneScrubber.java +++ b/src/java/org/apache/cassandra/tools/StandaloneScrubber.java @@ -18,7 +18,6 @@ */ package org.apache.cassandra.tools; -import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -144,7 +143,7 @@ public class StandaloneScrubber headerFixBuilder = headerFixBuilder.dryRun(); for (Pair<Descriptor, Set<Component>> p : listResult) - headerFixBuilder.withPath(Paths.get(p.left.filenameFor(Component.DATA))); + headerFixBuilder.withPath(File.getPath(p.left.filenameFor(Component.DATA))); SSTableHeaderFix headerFix = headerFixBuilder.build(); try diff --git a/test/simulator/main/org/apache/cassandra/simulator/SimulationException.java b/test/simulator/main/org/apache/cassandra/simulator/SimulationException.java new file mode 100644 index 0000000000..71ad4e0a01 --- /dev/null +++ b/test/simulator/main/org/apache/cassandra/simulator/SimulationException.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.cassandra.simulator; + +public class SimulationException extends RuntimeException +{ + public SimulationException(long seed, Throwable t) + { + super(createMsg(seed, null), t, true, false); + } + + public SimulationException(long seed, String msg, Throwable t) + { + super(createMsg(seed, msg), t, true, false); + } + + private static String createMsg(long seed, String msg) + { + return String.format("Failed on seed 0x%s%s", Long.toHexString(seed), msg == null ? "" : "; " + msg); + } +} diff --git a/test/simulator/main/org/apache/cassandra/simulator/SimulationRunner.java b/test/simulator/main/org/apache/cassandra/simulator/SimulationRunner.java index 3a651c9a08..6f1eb12f30 100644 --- a/test/simulator/main/org/apache/cassandra/simulator/SimulationRunner.java +++ b/test/simulator/main/org/apache/cassandra/simulator/SimulationRunner.java @@ -365,9 +365,14 @@ public class SimulationRunner } catch (Throwable t) { - logger.error("Failed on seed {}", Long.toHexString(seed), t); + throw new SimulationException(seed, t); } } + catch (Throwable t) + { + if (t instanceof SimulationException) throw t; + throw new SimulationException(seed, "Failure creating the simulation", t); + } } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org