Class FBUtilities


  • public class FBUtilities
    extends java.lang.Object
    • Constructor Summary

      Constructors 
      Constructor Description
      FBUtilities()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static long abs​(long index)  
      static long align​(long val, int boundary)  
      static java.util.concurrent.Future<java.util.List> allOf​(java.util.Collection<java.util.concurrent.Future> futures)
      Returns a new Future wrapping the given list of futures and returning a list of their results.
      static java.io.File cassandraTriggerDir()  
      static <T> java.lang.Class<T> classForName​(java.lang.String classname, java.lang.String readable)  
      static <T> CloseableIterator<T> closeableIterator​(java.util.Iterator<T> iterator)  
      static void closeAll​(java.util.Collection<? extends java.lang.AutoCloseable> l)  
      static int compareUnsigned​(byte[] bytes1, byte[] bytes2)  
      static int compareUnsigned​(byte[] bytes1, byte[] bytes2, int offset1, int offset2, int len1, int len2)  
      static <T> T construct​(java.lang.String classname, java.lang.String readable)
      Constructs an instance of the given class, which must have a no-arg or default constructor.
      static long copy​(java.io.InputStream from, java.io.OutputStream to, long limit)  
      static <T> java.util.NavigableSet<T> emptySortedSet​(java.util.Comparator<? super T> comparator)  
      static void exec​(java.lang.ProcessBuilder pb)
      Starts and waits for the given @param pb to finish.
      static java.util.List<java.lang.String> fromJsonList​(java.lang.String json)  
      static java.util.Map<java.lang.String,​java.lang.String> fromJsonMap​(java.lang.String json)  
      static int getAvailableProcessors()  
      static InetAddressAndPort getBroadcastAddressAndPort()
      Get the broadcast address and port for intra-cluster storage traffic.
      static InetAddressAndPort getBroadcastNativeAddressAndPort()
      This returns the address that is bound to for the native protocol for communicating with clients.
      static java.net.InetAddress getJustBroadcastAddress()
      Retrieve just the broadcast address but not the port.
      static java.net.InetAddress getJustBroadcastNativeAddress()
      This returns the address that is bound to for the native protocol for communicating with clients.
      static java.net.InetAddress getJustLocalAddress()
      Please use getJustBroadcastAddress instead.
      static InetAddressAndPort getLocalAddressAndPort()
      The address and port to listen on for intra-cluster storage traffic (not client).
      static java.lang.String getNetworkInterface​(java.net.InetAddress localAddress)  
      static java.lang.String getPreviousReleaseVersionString()  
      static java.lang.reflect.Field getProtectedField​(java.lang.Class klass, java.lang.String fieldName)
      Used to get access to protected/private field of the specified class
      static java.lang.String getReleaseVersionMajor()  
      static java.lang.String getReleaseVersionString()  
      static java.io.File getToolsOutputDirectory()  
      static <T> T instanceOrConstruct​(java.lang.String classname, java.lang.String readable)
      Constructs an instance of the given class, which must have a no-arg or default constructor.
      static boolean isAuditLoggerClassExists​(java.lang.String className)  
      static java.lang.String json​(java.lang.Object object)  
      static Pair<java.math.BigInteger,​java.lang.Boolean> midpoint​(java.math.BigInteger left, java.math.BigInteger right, int sigbits)
      Given two bit arrays represented as BigIntegers, containing the given number of significant bits, calculate a midpoint.
      static IAuditLogger newAuditLogger​(java.lang.String className, java.util.Map<java.lang.String,​java.lang.String> parameters)  
      static IAuthenticator newAuthenticator​(java.lang.String className)  
      static IAuthorizer newAuthorizer​(java.lang.String className)  
      static java.security.MessageDigest newMessageDigest​(java.lang.String algorithm)  
      static INetworkAuthorizer newNetworkAuthorizer​(java.lang.String className)  
      static IPartitioner newPartitioner​(java.lang.String partitionerClassName)  
      static IPartitioner newPartitioner​(Descriptor desc)
      Create a new instance of a partitioner defined in an SSTable Descriptor
      static IRoleManager newRoleManager​(java.lang.String className)  
      static int nowInSeconds()  
      static java.lang.String prettyPrintMemory​(long size)  
      static java.lang.String prettyPrintMemory​(long size, boolean includeSpace)  
      static java.lang.String prettyPrintMemoryPerSecond​(long rate)  
      static java.lang.String prettyPrintMemoryPerSecond​(long bytes, long timeInNano)  
      static void preventIllegalAccessWarnings()
      Hack to prevent the ugly "illegal access" warnings in Java 11+ like the following.
      static void reset()  
      static java.lang.String resourceToFile​(java.lang.String filename)  
      static <T> byte[] serialize​(T object, IVersionedSerializer<T> serializer, int version)  
      static void setBroadcastInetAddress​(java.net.InetAddress addr)
      THIS IS FOR TESTING ONLY!!
      static void setBroadcastInetAddressAndPort​(InetAddressAndPort addr)
      THIS IS FOR TESTING ONLY!!
      static void setPreviousReleaseVersionString​(java.lang.String previousReleaseVersionString)  
      static <T> java.util.NavigableSet<T> singleton​(T column, java.util.Comparator<? super T> comparator)  
      static void sleepQuietly​(long millis)  
      static void sortSampledKeys​(java.util.List<DecoratedKey> keys, Range<Token> range)  
      static long timestampMicros()  
      static java.lang.String toString​(java.util.Map<?,​?> map)
      Make straing out of the given Map.
      static byte[] toWriteUTFBytes​(java.lang.String s)  
      static void updateChecksum​(java.util.zip.CRC32 checksum, java.nio.ByteBuffer buffer)
      Updates checksum with the provided ByteBuffer.
      static void updateChecksum​(java.util.zip.CRC32 checksum, java.nio.ByteBuffer buffer, int offset, int length)
      Updates checksum with the provided ByteBuffer at the given offset + length.
      static void updateChecksumInt​(java.util.zip.Checksum checksum, int v)  
      static <T> java.util.concurrent.Future<? extends T> waitOnFirstFuture​(java.lang.Iterable<? extends java.util.concurrent.Future<? extends T>> futures)  
      static <T> java.util.concurrent.Future<? extends T> waitOnFirstFuture​(java.lang.Iterable<? extends java.util.concurrent.Future<? extends T>> futures, long delay)
      Only wait for the first future to finish from a list of futures.
      static <T> T waitOnFuture​(java.util.concurrent.Future<T> future)  
      static <T> java.util.List<T> waitOnFutures​(java.lang.Iterable<? extends java.util.concurrent.Future<? extends T>> futures)  
      static <T> java.util.List<T> waitOnFutures​(java.lang.Iterable<? extends java.util.concurrent.Future<? extends T>> futures, long timeout, java.util.concurrent.TimeUnit units)
      Block for a collection of futures, with optional timeout.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • UNKNOWN_RELEASE_VERSION

        public static final java.lang.String UNKNOWN_RELEASE_VERSION
        See Also:
        Constant Field Values
      • TWO

        public static final java.math.BigInteger TWO
      • isWindows

        public static final boolean isWindows
      • isLinux

        public static final boolean isLinux
    • Constructor Detail

      • FBUtilities

        public FBUtilities()
    • Method Detail

      • getAvailableProcessors

        public static int getAvailableProcessors()
      • newMessageDigest

        public static java.security.MessageDigest newMessageDigest​(java.lang.String algorithm)
      • getJustLocalAddress

        public static java.net.InetAddress getJustLocalAddress()
        Please use getJustBroadcastAddress instead. You need this only when you have to listen/connect. It's also missing the port you should be using. 99% of code doesn't want this.
      • getLocalAddressAndPort

        public static InetAddressAndPort getLocalAddressAndPort()
        The address and port to listen on for intra-cluster storage traffic (not client). Use this to get the correct stuff to listen on for intra-cluster communication.
      • getJustBroadcastAddress

        public static java.net.InetAddress getJustBroadcastAddress()
        Retrieve just the broadcast address but not the port. This is almost always the wrong thing to be using because it's ambiguous since you need the address and port to identify a node. You want getBroadcastAddressAndPort
      • getBroadcastAddressAndPort

        public static InetAddressAndPort getBroadcastAddressAndPort()
        Get the broadcast address and port for intra-cluster storage traffic. This the address to advertise that uniquely identifies the node and is reachable from everywhere. This is the one you want unless you are trying to connect to the local address specifically.
      • setBroadcastInetAddress

        public static void setBroadcastInetAddress​(java.net.InetAddress addr)
        THIS IS FOR TESTING ONLY!!
      • setBroadcastInetAddressAndPort

        public static void setBroadcastInetAddressAndPort​(InetAddressAndPort addr)
        THIS IS FOR TESTING ONLY!!
      • getJustBroadcastNativeAddress

        public static java.net.InetAddress getJustBroadcastNativeAddress()
        This returns the address that is bound to for the native protocol for communicating with clients. This is ambiguous because it doesn't include the port and it's almost always the wrong thing to be using you want getBroadcastNativeAddressAndPort
      • getBroadcastNativeAddressAndPort

        public static InetAddressAndPort getBroadcastNativeAddressAndPort()
        This returns the address that is bound to for the native protocol for communicating with clients. This is almost always what you need to identify a node and how to connect to it as a client.
      • getNetworkInterface

        public static java.lang.String getNetworkInterface​(java.net.InetAddress localAddress)
      • midpoint

        public static Pair<java.math.BigInteger,​java.lang.Boolean> midpoint​(java.math.BigInteger left,
                                                                                  java.math.BigInteger right,
                                                                                  int sigbits)
        Given two bit arrays represented as BigIntegers, containing the given number of significant bits, calculate a midpoint.
        Parameters:
        left - The left point.
        right - The right point.
        sigbits - The number of bits in the points that are significant.
        Returns:
        A midpoint that will compare bitwise halfway between the params, and a boolean representing whether a non-zero lsbit remainder was generated.
      • compareUnsigned

        public static int compareUnsigned​(byte[] bytes1,
                                          byte[] bytes2,
                                          int offset1,
                                          int offset2,
                                          int len1,
                                          int len2)
      • compareUnsigned

        public static int compareUnsigned​(byte[] bytes1,
                                          byte[] bytes2)
      • sortSampledKeys

        public static void sortSampledKeys​(java.util.List<DecoratedKey> keys,
                                           Range<Token> range)
      • cassandraTriggerDir

        public static java.io.File cassandraTriggerDir()
      • setPreviousReleaseVersionString

        public static void setPreviousReleaseVersionString​(java.lang.String previousReleaseVersionString)
      • getPreviousReleaseVersionString

        public static java.lang.String getPreviousReleaseVersionString()
      • getReleaseVersionString

        public static java.lang.String getReleaseVersionString()
      • getReleaseVersionMajor

        public static java.lang.String getReleaseVersionMajor()
      • timestampMicros

        public static long timestampMicros()
      • nowInSeconds

        public static int nowInSeconds()
      • waitOnFutures

        public static <T> java.util.List<T> waitOnFutures​(java.lang.Iterable<? extends java.util.concurrent.Future<? extends T>> futures)
      • waitOnFutures

        public static <T> java.util.List<T> waitOnFutures​(java.lang.Iterable<? extends java.util.concurrent.Future<? extends T>> futures,
                                                          long timeout,
                                                          java.util.concurrent.TimeUnit units)
        Block for a collection of futures, with optional timeout.
        Parameters:
        futures -
        timeout - The number of units to wait in total. If this value is less than or equal to zero, no tiemout value will be passed to Future.get().
        units - The units of timeout.
      • waitOnFuture

        public static <T> T waitOnFuture​(java.util.concurrent.Future<T> future)
      • waitOnFirstFuture

        public static <T> java.util.concurrent.Future<? extends T> waitOnFirstFuture​(java.lang.Iterable<? extends java.util.concurrent.Future<? extends T>> futures)
      • waitOnFirstFuture

        public static <T> java.util.concurrent.Future<? extends T> waitOnFirstFuture​(java.lang.Iterable<? extends java.util.concurrent.Future<? extends T>> futures,
                                                                                     long delay)
        Only wait for the first future to finish from a list of futures. Will block until at least 1 future finishes.
        Parameters:
        futures - The futures to wait on
        Returns:
        future that completed.
      • allOf

        public static java.util.concurrent.Future<java.util.List> allOf​(java.util.Collection<java.util.concurrent.Future> futures)
        Returns a new Future wrapping the given list of futures and returning a list of their results.
      • newPartitioner

        public static IPartitioner newPartitioner​(Descriptor desc)
                                           throws java.io.IOException
        Create a new instance of a partitioner defined in an SSTable Descriptor
        Parameters:
        desc - Descriptor of an sstable
        Returns:
        a new IPartitioner instance
        Throws:
        java.io.IOException
      • newNetworkAuthorizer

        public static INetworkAuthorizer newNetworkAuthorizer​(java.lang.String className)
      • isAuditLoggerClassExists

        public static boolean isAuditLoggerClassExists​(java.lang.String className)
      • classForName

        public static <T> java.lang.Class<T> classForName​(java.lang.String classname,
                                                          java.lang.String readable)
                                                   throws ConfigurationException
        Parameters:
        classname - Fully qualified classname.
        readable - Descriptive noun for the role the class plays.
        Returns:
        The Class for the given name.
        Throws:
        ConfigurationException - If the class cannot be found.
      • instanceOrConstruct

        public static <T> T instanceOrConstruct​(java.lang.String classname,
                                                java.lang.String readable)
                                         throws ConfigurationException
        Constructs an instance of the given class, which must have a no-arg or default constructor.
        Parameters:
        classname - Fully qualified classname.
        readable - Descriptive noun for the role the class plays.
        Throws:
        ConfigurationException - If the class cannot be found.
      • construct

        public static <T> T construct​(java.lang.String classname,
                                      java.lang.String readable)
                               throws ConfigurationException
        Constructs an instance of the given class, which must have a no-arg or default constructor.
        Parameters:
        classname - Fully qualified classname.
        readable - Descriptive noun for the role the class plays.
        Throws:
        ConfigurationException - If the class cannot be found.
      • singleton

        public static <T> java.util.NavigableSet<T> singleton​(T column,
                                                              java.util.Comparator<? super T> comparator)
      • emptySortedSet

        public static <T> java.util.NavigableSet<T> emptySortedSet​(java.util.Comparator<? super T> comparator)
      • toString

        @Nonnull
        public static java.lang.String toString​(@Nullable
                                                java.util.Map<?,​?> map)
        Make straing out of the given Map.
        Parameters:
        map - Map to make string.
        Returns:
        String representation of all entries in the map, where key and value pair is concatenated with ':'.
      • getProtectedField

        public static java.lang.reflect.Field getProtectedField​(java.lang.Class klass,
                                                                java.lang.String fieldName)
        Used to get access to protected/private field of the specified class
        Parameters:
        klass - - name of the class
        fieldName - - name of the field
        Returns:
        Field or null on error
      • closeableIterator

        public static <T> CloseableIterator<T> closeableIterator​(java.util.Iterator<T> iterator)
      • fromJsonMap

        public static java.util.Map<java.lang.String,​java.lang.String> fromJsonMap​(java.lang.String json)
      • fromJsonList

        public static java.util.List<java.lang.String> fromJsonList​(java.lang.String json)
      • json

        public static java.lang.String json​(java.lang.Object object)
      • prettyPrintMemory

        public static java.lang.String prettyPrintMemory​(long size)
      • prettyPrintMemory

        public static java.lang.String prettyPrintMemory​(long size,
                                                         boolean includeSpace)
      • prettyPrintMemoryPerSecond

        public static java.lang.String prettyPrintMemoryPerSecond​(long rate)
      • prettyPrintMemoryPerSecond

        public static java.lang.String prettyPrintMemoryPerSecond​(long bytes,
                                                                  long timeInNano)
      • exec

        public static void exec​(java.lang.ProcessBuilder pb)
                         throws java.io.IOException
        Starts and waits for the given @param pb to finish.
        Throws:
        java.io.IOException - on non-zero exit code
      • updateChecksumInt

        public static void updateChecksumInt​(java.util.zip.Checksum checksum,
                                             int v)
      • updateChecksum

        public static void updateChecksum​(java.util.zip.CRC32 checksum,
                                          java.nio.ByteBuffer buffer,
                                          int offset,
                                          int length)
        Updates checksum with the provided ByteBuffer at the given offset + length. Resets position and limit back to their original values on return. This method is *NOT* thread-safe.
      • updateChecksum

        public static void updateChecksum​(java.util.zip.CRC32 checksum,
                                          java.nio.ByteBuffer buffer)
        Updates checksum with the provided ByteBuffer. Resets position back to its original values on return. This method is *NOT* thread-safe.
      • abs

        public static long abs​(long index)
      • serialize

        public static <T> byte[] serialize​(T object,
                                           IVersionedSerializer<T> serializer,
                                           int version)
      • copy

        public static long copy​(java.io.InputStream from,
                                java.io.OutputStream to,
                                long limit)
                         throws java.io.IOException
        Throws:
        java.io.IOException
      • getToolsOutputDirectory

        public static java.io.File getToolsOutputDirectory()
      • closeAll

        public static void closeAll​(java.util.Collection<? extends java.lang.AutoCloseable> l)
                             throws java.lang.Exception
        Throws:
        java.lang.Exception
      • toWriteUTFBytes

        public static byte[] toWriteUTFBytes​(java.lang.String s)
      • sleepQuietly

        public static void sleepQuietly​(long millis)
      • align

        public static long align​(long val,
                                 int boundary)
      • reset

        public static void reset()
      • preventIllegalAccessWarnings

        public static void preventIllegalAccessWarnings()
        Hack to prevent the ugly "illegal access" warnings in Java 11+ like the following.