Class FDBException

  • All Implemented Interfaces:
    CloneableException, java.io.Serializable

    public class FDBException
    extends java.lang.RuntimeException
    implements CloneableException
    An Error from the native layers of FoundationDB. Each FDBException sets the message of the underlying Java Exception. FDB exceptions expose a number of functions including, for example, isRetryable() that evaluate predicates on the internal FDB error. Most clients should use those methods in order to implement special handling for certain errors if their application requires it.

    Errors in FDB should generally be retried if they match the isRetryable() predicate. In addition, as with any distributed system, certain classes of errors may fail in such a way that it is unclear whether the transaction succeeded (they may be committed or not). To handle these cases, clients are generally advised to make their database operations idempotent and to place their operations within retry loops. The FDB Java API provides some default retry loops within the Database interface. See the discussion within the documentation of Database.runAsync() for more details.

    See Also:
    Transaction.onError(), Database.runAsync(), Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      FDBException​(java.lang.String message, int code)
      A general constructor.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int getCode()
      Gets the code for this error.
      boolean isMaybeCommitted()
      Returns true if the error indicates the transaction may have succeeded, though not in a way the system can verify.
      boolean isRetryable()
      Returns true if the error indicates the operations in the transactions should be retried because of transient error.
      boolean isRetryableNotCommitted()
      Returns true if the error indicates the transaction has not committed, though in a way that can be retried.
      boolean isSuccess()
      Determine if this FDBException represents a success code from the native layer.
      java.lang.Exception retargetClone()
      Create and return a new Exception that has a backtrace including the calling line of code.
      • Methods inherited from class java.lang.Throwable

        addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • FDBException

        public FDBException​(java.lang.String message,
                            int code)
        A general constructor. Not for use by client code.
        Parameters:
        message - error message of this exception
        code - internal FDB error code of this exception
    • Method Detail

      • getCode

        public int getCode()
        Gets the code for this error. A list of common errors codes are published elsewhere within our documentation.
        Returns:
        the internal FDB error code
      • isSuccess

        public boolean isSuccess()
        Determine if this FDBException represents a success code from the native layer.
        Returns:
        true if this error represents success, false otherwise
      • retargetClone

        public java.lang.Exception retargetClone()
        Description copied from interface: CloneableException
        Create and return a new Exception that has a backtrace including the calling line of code.
        Specified by:
        retargetClone in interface CloneableException
        Returns:
        a newly created Exception.
      • isRetryable

        public boolean isRetryable()
        Returns true if the error indicates the operations in the transactions should be retried because of transient error.
        Returns:
        true if this FDBException is retryable
      • isMaybeCommitted

        public boolean isMaybeCommitted()
        Returns true if the error indicates the transaction may have succeeded, though not in a way the system can verify.
        Returns:
        true if this FDBException is maybe_committed
      • isRetryableNotCommitted

        public boolean isRetryableNotCommitted()
        Returns true if the error indicates the transaction has not committed, though in a way that can be retried.
        Returns:
        true if this FDBException is retryable_not_committed