mirror of https://github.com/apache/cassandra
Forbid other Future implementations with checkstyle
patch by Benedict Elliott Smith; reviewed by David Capwell for CASSANDRA-17055
This commit is contained in:
parent
185c5232a6
commit
2fc7206128
|
|
@ -1,4 +1,5 @@
|
|||
4.1
|
||||
* Forbid other Future implementations with checkstyle (CASSANDRA-17055)
|
||||
* commit log was switched from non-daemon to daemon threads, which causes the JVM to exit in some case as no non-daemon threads are active (CASSANDRA-17085)
|
||||
* Add a Denylist to block reads and writes on specific partition keys (CASSANDRA-12106)
|
||||
* v4+ protocol did not clean up client warnings, which caused leaking the state (CASSANDRA-17054)
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
</module>
|
||||
|
||||
<!-- https://checkstyle.org/config_filters.html#SuppressionFilter -->
|
||||
<!-- this exists only because for some reason the comment filter does not seem to work for Semaphore -->
|
||||
<module name="SuppressionFilter">
|
||||
<property name="file" value="${checkstyle.suppressions}"
|
||||
default="checkstyle-suppressions.xml" />
|
||||
|
|
@ -36,7 +37,24 @@
|
|||
</module>
|
||||
|
||||
<module name="TreeWalker">
|
||||
|
||||
<module name="SuppressWithNearbyCommentFilter">
|
||||
<property name="commentFormat" value="checkstyle: permit this import"/>
|
||||
<property name="checkFormat" value="IllegalImport"/>
|
||||
<property name="influenceFormat" value="0"/>
|
||||
</module>
|
||||
|
||||
<module name="SuppressWithNearbyCommentFilter">
|
||||
<property name="commentFormat" value="checkstyle: permit this instantiation"/>
|
||||
<property name="checkFormat" value="IllegalInstantiation"/>
|
||||
<property name="influenceFormat" value="0"/>
|
||||
</module>
|
||||
|
||||
<module name="SuppressWithNearbyCommentFilter">
|
||||
<property name="commentFormat" value="checkstyle: permit system clock"/>
|
||||
<property name="checkFormat" value="RegexpSinglelineJava"/>
|
||||
<property name="influenceFormat" value="0"/>
|
||||
</module>
|
||||
|
||||
<module name="RegexpSinglelineJava">
|
||||
<!-- To prevent static imports and System.nanoTime or System.currentTimeMillis -->
|
||||
<property name="format" value="(newSingleThreadExecutor|newFixedThreadPool|newCachedThreadPool|newSingleThreadScheduledExecutor|newWorkStealingPool|newScheduledThreadPool|defaultThreadFactory)\(|System\.(currentTimeMillis|nanoTime)"/>
|
||||
|
|
@ -44,7 +62,7 @@
|
|||
</module>
|
||||
<module name="IllegalImport">
|
||||
<property name="illegalPkgs" value=""/>
|
||||
<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"/>
|
||||
<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.Future,io.netty.util.concurrent.Promise,io.netty.util.concurrent.AbstractFuture,com.google.common.util.concurrent.ListenableFutureTask,com.google.common.util.concurrent.ListenableFuture,com.google.common.util.concurrent.AbstractFuture"/>
|
||||
</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))"/>
|
||||
|
|
|
|||
|
|
@ -21,6 +21,5 @@
|
|||
"https://checkstyle.org/dtds/suppressions_1_1.dtd">
|
||||
|
||||
<suppressions>
|
||||
<suppress checks="RegexpSinglelineJava" files="Clock\.java|Semaphore\.java"/>
|
||||
<suppress checks="IllegalImport|IllegalInstantiation" files="File\.java|[\\/]binlog[\\/]|Semaphore\.java|DataStructureFactory\.java|PathUtils\.java|UDFunction\.java|BlockingQueues\.java"/>
|
||||
<suppress checks="RegexpSinglelineJava" files="Semaphore\.java"/>
|
||||
</suppressions>
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ import java.util.Enumeration;
|
|||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.CompletableFuture; // checkstyle: permit this import
|
||||
import java.util.concurrent.Callable;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ package org.apache.cassandra.io.util;
|
|||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.nio.channels.FileChannel;
|
||||
import java.nio.file.*;
|
||||
import java.nio.file.*; // checkstyle: permit this import
|
||||
import java.util.Objects;
|
||||
import java.util.function.BiPredicate;
|
||||
import java.util.function.Consumer;
|
||||
|
|
@ -544,7 +544,7 @@ public class File implements Comparable<File>
|
|||
|
||||
public java.io.File toJavaIOFile()
|
||||
{
|
||||
return path == null ? new java.io.File("") : path.toFile();
|
||||
return path == null ? new java.io.File("") : path.toFile(); // checkstyle: permit this instantiation
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -536,7 +536,7 @@ public final class PathUtils
|
|||
|
||||
DeleteOnExit()
|
||||
{
|
||||
Runtime.getRuntime().addShutdownHook(new Thread(this));
|
||||
Runtime.getRuntime().addShutdownHook(new Thread(this)); // checkstyle: permit this instantiation
|
||||
}
|
||||
|
||||
synchronized void add(Path path, boolean recursive)
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import io.netty.channel.Channel;
|
|||
import io.netty.channel.ChannelFuture;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.channel.ChannelPromise;
|
||||
import io.netty.util.concurrent.Future;
|
||||
import io.netty.util.concurrent.Future; // checkstyle: permit this import
|
||||
import io.netty.util.concurrent.GenericFutureListener;
|
||||
import org.apache.cassandra.utils.concurrent.AsyncPromise;
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import java.util.concurrent.ExecutionException;
|
|||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
|
||||
import io.netty.util.concurrent.Future;
|
||||
import io.netty.util.concurrent.Future; // checkstyle: permit this import
|
||||
import io.netty.util.concurrent.GenericFutureListener;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
*/
|
||||
package org.apache.cassandra.net;
|
||||
|
||||
import io.netty.util.concurrent.Future;
|
||||
import io.netty.util.concurrent.Future; //checkstyle: permit this import
|
||||
|
||||
/**
|
||||
* An abstraction for yielding a result performed by an asynchronous task,
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ import io.netty.channel.ChannelPipeline;
|
|||
import io.netty.channel.group.ChannelGroup;
|
||||
import io.netty.channel.group.DefaultChannelGroup;
|
||||
import io.netty.util.concurrent.DefaultEventExecutor;
|
||||
import io.netty.util.concurrent.Future;
|
||||
import io.netty.util.concurrent.Future; //checkstyle: permit this import
|
||||
import io.netty.util.concurrent.GlobalEventExecutor;
|
||||
import io.netty.util.concurrent.PromiseNotifier;
|
||||
import io.netty.util.concurrent.SucceededFuture;
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ import org.apache.cassandra.utils.concurrent.FutureCombiner;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import io.netty.util.concurrent.Future;
|
||||
import io.netty.util.concurrent.Future; //checkstyle: permit this import
|
||||
import org.apache.cassandra.concurrent.ScheduledExecutors;
|
||||
import org.apache.cassandra.concurrent.Stage;
|
||||
import org.apache.cassandra.config.DatabaseDescriptor;
|
||||
|
|
|
|||
|
|
@ -45,8 +45,8 @@ import io.netty.channel.ChannelHandlerContext;
|
|||
import io.netty.channel.ChannelInboundHandlerAdapter;
|
||||
import io.netty.channel.EventLoop;
|
||||
import io.netty.channel.unix.Errors;
|
||||
import io.netty.util.concurrent.Future;
|
||||
import io.netty.util.concurrent.Promise;
|
||||
import io.netty.util.concurrent.Future; //checkstyle: permit this import
|
||||
import io.netty.util.concurrent.Promise; //checkstyle: permit this import
|
||||
import io.netty.util.concurrent.PromiseNotifier;
|
||||
import io.netty.util.concurrent.SucceededFuture;
|
||||
import org.apache.cassandra.config.DatabaseDescriptor;
|
||||
|
|
|
|||
|
|
@ -24,8 +24,8 @@ import java.nio.channels.ClosedChannelException;
|
|||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
import io.netty.util.concurrent.Future;
|
||||
import io.netty.util.concurrent.Promise;
|
||||
import io.netty.util.concurrent.Future; //checkstyle: permit this import
|
||||
import io.netty.util.concurrent.Promise; //checkstyle: permit this import
|
||||
import org.apache.cassandra.utils.concurrent.AsyncPromise;
|
||||
import org.apache.cassandra.utils.concurrent.ImmediateFuture;
|
||||
import org.slf4j.Logger;
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ import org.slf4j.Logger;
|
|||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.carrotsearch.hppc.ObjectObjectHashMap;
|
||||
import io.netty.util.concurrent.Future;
|
||||
import io.netty.util.concurrent.Future; //checkstyle: permit this import
|
||||
import org.apache.cassandra.locator.InetAddressAndPort;
|
||||
import org.apache.cassandra.metrics.InternodeOutboundMetrics;
|
||||
import org.apache.cassandra.utils.NoSpamLogger;
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ import com.google.common.annotations.VisibleForTesting;
|
|||
import com.google.common.collect.*;
|
||||
|
||||
import io.netty.channel.Channel;
|
||||
import io.netty.util.concurrent.Future;
|
||||
import io.netty.util.concurrent.Future; //checkstyle: permit this import
|
||||
import org.apache.cassandra.concurrent.ScheduledExecutors;
|
||||
import org.apache.cassandra.config.DatabaseDescriptor;
|
||||
import org.apache.cassandra.locator.RangesAtEndpoint;
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import java.io.IOException;
|
|||
import java.net.InetSocketAddress;
|
||||
import java.util.function.IntFunction;
|
||||
|
||||
import io.netty.util.concurrent.Future;
|
||||
import io.netty.util.concurrent.Future; //checkstyle: permit this import
|
||||
import org.apache.cassandra.streaming.async.NettyStreamingConnectionFactory;
|
||||
import org.apache.cassandra.utils.Shared;
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ import com.google.common.annotations.VisibleForTesting;
|
|||
import io.netty.channel.Channel;
|
||||
import io.netty.channel.ChannelPipeline;
|
||||
import io.netty.channel.EventLoop;
|
||||
import io.netty.util.concurrent.Future;
|
||||
import io.netty.util.concurrent.Future; // checkstyle: permit this import
|
||||
import org.apache.cassandra.net.ConnectionCategory;
|
||||
import org.apache.cassandra.net.MessagingService;
|
||||
import org.apache.cassandra.net.OutboundConnectionInitiator.Result;
|
||||
|
|
|
|||
|
|
@ -40,11 +40,10 @@ import org.slf4j.LoggerFactory;
|
|||
|
||||
import io.netty.channel.Channel;
|
||||
import io.netty.channel.ChannelFuture;
|
||||
import io.netty.util.concurrent.Future;
|
||||
import io.netty.util.concurrent.Future; // checkstyle: permit this import
|
||||
import org.apache.cassandra.concurrent.ExecutorPlus;
|
||||
import org.apache.cassandra.streaming.StreamSession;
|
||||
import org.apache.cassandra.streaming.messages.IncomingStreamMessage;
|
||||
import org.apache.cassandra.streaming.messages.KeepAliveMessage;
|
||||
import org.apache.cassandra.streaming.messages.OutgoingStreamMessage;
|
||||
import org.apache.cassandra.streaming.messages.StreamMessage;
|
||||
import org.apache.cassandra.utils.concurrent.UncheckedInterruptedException;
|
||||
|
|
@ -57,7 +56,6 @@ import static java.lang.Thread.currentThread;
|
|||
import static java.util.concurrent.TimeUnit.*;
|
||||
import static org.apache.cassandra.concurrent.ExecutorFactory.Global.executorFactory;
|
||||
import static org.apache.cassandra.config.Config.PROPERTY_PREFIX;
|
||||
import static org.apache.cassandra.config.DatabaseDescriptor.getStreamingKeepAlivePeriod;
|
||||
import static org.apache.cassandra.streaming.StreamSession.createLogTag;
|
||||
import static org.apache.cassandra.streaming.messages.StreamMessage.serialize;
|
||||
import static org.apache.cassandra.streaming.messages.StreamMessage.serializedSize;
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ import io.netty.channel.nio.NioEventLoopGroup;
|
|||
import io.netty.handler.codec.MessageToMessageDecoder;
|
||||
import io.netty.handler.codec.MessageToMessageEncoder;
|
||||
import io.netty.handler.ssl.SslContext;
|
||||
import io.netty.util.concurrent.Promise;
|
||||
import io.netty.util.concurrent.Promise; // checkstyle: permit this import
|
||||
import io.netty.util.concurrent.PromiseCombiner;
|
||||
import io.netty.util.internal.logging.InternalLoggerFactory;
|
||||
import io.netty.util.internal.logging.Slf4JLoggerFactory;
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ public interface Clock
|
|||
*/
|
||||
public long nanoTime()
|
||||
{
|
||||
return System.nanoTime();
|
||||
return System.nanoTime(); // checkstyle: permit system clock
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -99,7 +99,7 @@ public interface Clock
|
|||
*/
|
||||
public long currentTimeMillis()
|
||||
{
|
||||
return System.currentTimeMillis();
|
||||
return System.currentTimeMillis(); // checkstyle: permit system clock
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
package org.apache.cassandra.utils.binlog;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.File; // checkstyle: permit this import
|
||||
|
||||
import net.openhft.chronicle.queue.impl.StoreFileListener;
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
package org.apache.cassandra.utils.binlog;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.File; // checkstyle: permit this import
|
||||
import java.util.Queue;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
package org.apache.cassandra.utils.binlog;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.File; // checkstyle: permit this import
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Path;
|
||||
import java.util.concurrent.DelayQueue;
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ import javax.annotation.Nullable;
|
|||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.util.concurrent.AsyncFunction;
|
||||
import com.google.common.util.concurrent.FutureCallback;
|
||||
import com.google.common.util.concurrent.ListenableFuture;
|
||||
import com.google.common.util.concurrent.ListenableFuture; // checkstyle: permit this import
|
||||
|
||||
import io.netty.util.concurrent.GenericFutureListener;
|
||||
import io.netty.util.internal.ThrowableUtil;
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import java.util.function.Function;
|
|||
import javax.annotation.Nullable;
|
||||
|
||||
import com.google.common.util.concurrent.AsyncFunction;
|
||||
import com.google.common.util.concurrent.ListenableFuture;
|
||||
import com.google.common.util.concurrent.ListenableFuture; // checkstyle: permit this import
|
||||
|
||||
import io.netty.util.concurrent.GenericFutureListener;
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ import java.util.function.Consumer;
|
|||
|
||||
import com.google.common.util.concurrent.FutureCallback;
|
||||
|
||||
import io.netty.util.concurrent.Future;
|
||||
import io.netty.util.concurrent.Future; // checkstyle: permit this import
|
||||
import io.netty.util.concurrent.GenericFutureListener;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -22,8 +22,8 @@ import java.util.Collection;
|
|||
import java.util.Iterator;
|
||||
import java.util.Queue;
|
||||
import java.util.concurrent.BlockingQueue;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
import java.util.concurrent.SynchronousQueue;
|
||||
import java.util.concurrent.LinkedBlockingQueue; // checkstyle: permit this import
|
||||
import java.util.concurrent.SynchronousQueue; // checkstyle: permit this import
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.apache.cassandra.utils.Intercept;
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ import java.util.function.Function;
|
|||
|
||||
import com.google.common.util.concurrent.AsyncFunction;
|
||||
import com.google.common.util.concurrent.FutureCallback;
|
||||
import com.google.common.util.concurrent.ListenableFuture;
|
||||
import com.google.common.util.concurrent.ListenableFuture; // checkstyle: permit this import
|
||||
|
||||
import io.netty.util.concurrent.GenericFutureListener;
|
||||
|
||||
|
|
|
|||
|
|
@ -252,7 +252,7 @@ public interface Semaphore
|
|||
|
||||
public FairJDK(int permits)
|
||||
{
|
||||
wrapped = new java.util.concurrent.Semaphore(permits, true);
|
||||
wrapped = new java.util.concurrent.Semaphore(permits, true); // checkstyle: permit this instantiation
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import java.util.function.Function;
|
|||
import javax.annotation.Nullable;
|
||||
|
||||
import com.google.common.util.concurrent.AsyncFunction;
|
||||
import com.google.common.util.concurrent.ListenableFuture;
|
||||
import com.google.common.util.concurrent.ListenableFuture; // checkstyle: permit this import
|
||||
|
||||
import io.netty.util.concurrent.GenericFutureListener;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue