Class ThreeDFileBinaryRequestExecutor
java.lang.Object
com.cognite.client.servicesV1.executor.ThreeDFileBinaryRequestExecutor
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).-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic classRepresents a request error caused by a client error. -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiondownloadBinary(okhttp3.Request request) Executes a given request and returns the response body as a 3d file binary.downloadBinaryAsync(okhttp3.Request request) Executes a given request and returns the response body as a 3d file binary.enableDeleteTempFile(boolean enable) Configure how to treat a temp blob after an upload.enableForceTempStorage(boolean enable) Forces the use of temp storage for all binaries--not just the >200MiB ones.of(okhttp3.OkHttpClient client) withExecutor(Executor executor) Sets the executor to use for running the api requests.withMaxRetries(int retries) Sets the maximum number of retries.withTempStoragePath(URI path) Sets the temporary storage path for storing large file binaries.withValidResponseCodes(List<Integer> validResponseCodes) Specifies a set of valid http response codes *in addition* to the 200-range.
-
Field Details
-
LOG
protected static final org.slf4j.Logger LOG
-
-
Constructor Details
-
ThreeDFileBinaryRequestExecutor
public ThreeDFileBinaryRequestExecutor()
-
-
Method Details
-
of
-
withExecutor
Sets the executor to use for running the api requests. The default executor is aForkJoinPoolwith a target parallelism of four threads per core.- Parameters:
executor-- Returns:
-
withMaxRetries
Sets the maximum number of retries. The default setting is 3.- Parameters:
retries-- Returns:
-
withValidResponseCodes
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
Forces the use of temp storage for all binaries--not just the >200MiB ones. The default isfalse.- Parameters:
enable-- Returns:
-
withTempStoragePath
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 asgs://<my-storage-bucket>/<my-path>/.- Parameters:
path-- Returns:
-
enableDeleteTempFile
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 totrue, 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 tofalse, the temp file (if present) will not be deleted. The default setting istrue.- Parameters:
enable-- Returns:
-
downloadBinaryAsync
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
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 aResponseis 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 isdownloadBinaryAsync- Throws:
Exception
-