Package oracle.kv

# Class RequestTimeoutException

java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
oracle.kv.FastExternalizableException
oracle.kv.FaultException
oracle.kv.RequestTimeoutException

All Implemented Interfaces:
  `Serializable`, `oracle.kv.impl.util.FastExternalizable`

public class RequestTimeoutException extends FaultException
Thrown when a request cannot be processed because the configured timeout interval is exceeded.

The default timeout interval (specified by `KVStoreConfig.getRequestTimeout(java.util.concurrent.TimeUnit)`) is five seconds, and this exception should rarely be thrown.

Note that the durability of an update operation may be uncertain if it results in a `RequestTimeoutException` being thrown. In most cases, the exception means that the changes requested by the update may or may not have been committed to the master or propagated to one or more replicas. Applications may want to retry the update operation if it is idempotent, or perform read operations to determine the outcome of the previous update.

In the case that an application receives a `RequestTimeoutException` whose cause is a `DurabilityException` and calling `DurabilityException.getNoSideEffects()` returns true, the application can safely assume that none of the changes requested by the operation have been performed and can retry the operation. If getNoSideEffects returns false, then the operation may or may not have had side effects.

Note also that if the consistency specified for a read operation is `Consistency.NONE_REQUIRED_NO_MASTER`, then this exception will be thrown if the operation is attempted when the only node available is the Master.

Depending on the nature of the application, when this exception is thrown the client may wish to

- retry the operation,
- fall back to using a larger timeout interval, and resume using the original timeout interval at a later time, or
- give up and report an error at a higher level.

See Also:
  - Serialized Form

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `getMessage()`
  `int`
  `getTimeoutMs()`
  Returns the timeout that was in effect for the operation.
  `void`
  `setTimeoutMs(int timeoutMs)`
  Sets the timeout that was in effect for the operation.
  `String`
  `toString()`
  Returns a description of the fault that includes the standard `Throwable` description (class name and message), followed by the fault class name, followed by the remote stack trace (if any).

  ### Methods inherited from class oracle.kv.FaultException

  `getFaultClassName, getRemoteStackTrace, wasLoggedRemotely`

  ### Methods inherited from class java.lang.Throwable

  `addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface oracle.kv.impl.util.FastExternalizable

  `deserializedForm`

- ## Method Details

  - ### getMessage

    public String getMessage()
    Overrides:
      `getMessage` in class `Throwable`

  - ### toString

    public String toString()
    Description copied from class: `FaultException`
    Returns a description of the fault that includes the standard `Throwable` description (class name and message), followed by the fault class name, followed by the remote stack trace (if any). This method exists primarily for logging, testing and debugging.
    Overrides:
      `toString` in class `FaultException`

  - ### getTimeoutMs

    public int getTimeoutMs()
    Returns the timeout that was in effect for the operation.

  - ### setTimeoutMs

    public void setTimeoutMs(int timeoutMs)
    Sets the timeout that was in effect for the operation.