Class ThreeDFileBinaryRequestExecutor


  • public abstract class ThreeDFileBinaryRequestExecutor
    extends Object
    This request executor implements specific behavior to deal with very large request/response bodies when operating on file binaries. It will cap in-memory bodies at 200MiB and use temporary blob storage to host the binary. This "overflow to disk" behavior is supported for both downloads and uploads. This class will execute an okhttp3 request on a separate thread and publish the result via a CompletableFuture. This allows the client code to spin off multiple concurrent request without blocking the main thread. This represents the "blocking IO on a separate thread" pattern, and will work fine for client workloads (limited number of concurrent requests).
    • Field Detail

      • LOG

        protected static final org.slf4j.Logger LOG
    • Constructor Detail

      • ThreeDFileBinaryRequestExecutor

        public ThreeDFileBinaryRequestExecutor()
    • Method Detail

      • withExecutor

        public ThreeDFileBinaryRequestExecutor withExecutor​(Executor executor)
        Sets the executor to use for running the api requests. The default executor is a ForkJoinPool with a target parallelism of four threads per core.
        Parameters:
        executor -
        Returns:
      • withMaxRetries

        public ThreeDFileBinaryRequestExecutor withMaxRetries​(int retries)
        Sets the maximum number of retries. The default setting is 3.
        Parameters:
        retries -
        Returns:
      • withValidResponseCodes

        public ThreeDFileBinaryRequestExecutor withValidResponseCodes​(List<Integer> validResponseCodes)
        Specifies a set of valid http response codes *in addition* to the 200-range. By default, any 2xx response is considered a valid response. By specifying additional codes, this executor will return responses from outside the 200-range. This could be useful in case you want to handle non-200 responses with custom logic. For example, duplicate detection and constraint violations are reported as non-200 responses from the Cognite API.
        Parameters:
        validResponseCodes - A list of valid response codes.
        Returns:
      • enableForceTempStorage

        public ThreeDFileBinaryRequestExecutor enableForceTempStorage​(boolean enable)
        Forces the use of temp storage for all binaries--not just the >200MiB ones. The default is false.
        Parameters:
        enable -
        Returns:
      • withTempStoragePath

        public ThreeDFileBinaryRequestExecutor withTempStoragePath​(URI path)
        Sets the temporary storage path for storing large file binaries. If the binary is >200 MiB it will be stored in temp storage instead of in memory. The following storage providers are supported: - Google Cloud Storage. Specify the temp path as gs://<my-storage-bucket>/<my-path>/.
        Parameters:
        path -
        Returns:
      • enableDeleteTempFile

        public ThreeDFileBinaryRequestExecutor enableDeleteTempFile​(boolean enable)
        Configure how to treat a temp blob after an upload. This setting only affects behavior when uploading file binaries to the Cognite API--it has no effect on downloading file binaries. When set to true, the temp file (if present) will be removed after a successful upload. If the file binary is memory-based (which is the default for small and medium sized files), this setting has no effect. When set to false, the temp file (if present) will not be deleted. The default setting is true.
        Parameters:
        enable -
        Returns:
      • downloadBinaryAsync

        public CompletableFuture<ThreeDFileBinary> downloadBinaryAsync​(okhttp3.Request request)
        Executes a given request and returns the response body as a 3d file binary. Checks for transient server errors and retires the request until a valid response is produced, or the max number of retries is reached. This method executes as a blocking I/O operation on a separate thread--the calling thread is not blocked and can continue working on its tasks. Each retry is performed with exponential back-off in case the api is overloaded. If no valid response can be produced, this method will throw an exception.
        Parameters:
        request - The request to execute
        Returns:
      • downloadBinary

        public ThreeDFileBinary downloadBinary​(okhttp3.Request request)
                                        throws Exception
        Executes a given request and returns the response body as a 3d file binary. Checks for transient server errors and retires the request until a valid response is produced, or the max number of retries is reached. This method blocks until a Response is produced. Each retry is performed with exponential back-off in case the api is overloaded. If no valid response can be produced, this method will throw an exception. The async version of this method is downloadBinaryAsync
        Throws:
        Exception