There are scenarios in which disk space is more plentiful than memory space. This new BlobWriteSessionConfig allows augmenting an instance of storage to produce BlobWriteSessions which will buffer to disk rather than holding things in memory.
If we have disk available we can checkpoint the contents of an object to disk before
transmitting to GCS. The checkpointed data on disk allows arbitrary rewind in the case of failure
but allows the upload to happen as soon as the checkpoint ack is complete.
Due to the details of how Resumable Upload Sessions are implemented in the GCS gRPC API this
is possible. However, this approach will not work with the HTTP transports Resumable Upload
Session spec.
See Also: Storage#blobWriteSession(BlobInfo, BlobWriteOption...), GrpcStorageOptions.Builder#setBlobWriteSessionConfig(BlobWriteSessionConfig)
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-16 UTC."],[],[],null,["# Class JournalingBlobWriteSessionConfig (2.55.0)\n\nVersion latestkeyboard_arrow_down\n\n- [2.55.0 (latest)](/java/docs/reference/google-cloud-storage/latest/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.54.0](/java/docs/reference/google-cloud-storage/2.54.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.53.3](/java/docs/reference/google-cloud-storage/2.53.3/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.52.3](/java/docs/reference/google-cloud-storage/2.52.3/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.50.0](/java/docs/reference/google-cloud-storage/2.50.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.49.0](/java/docs/reference/google-cloud-storage/2.49.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.48.2](/java/docs/reference/google-cloud-storage/2.48.2/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.47.0](/java/docs/reference/google-cloud-storage/2.47.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.46.0](/java/docs/reference/google-cloud-storage/2.46.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.45.0](/java/docs/reference/google-cloud-storage/2.45.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.44.1](/java/docs/reference/google-cloud-storage/2.44.1/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.43.2](/java/docs/reference/google-cloud-storage/2.43.2/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.42.0](/java/docs/reference/google-cloud-storage/2.42.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.41.0](/java/docs/reference/google-cloud-storage/2.41.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.40.1](/java/docs/reference/google-cloud-storage/2.40.1/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.39.0](/java/docs/reference/google-cloud-storage/2.39.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.38.0](/java/docs/reference/google-cloud-storage/2.38.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.37.0](/java/docs/reference/google-cloud-storage/2.37.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.36.1](/java/docs/reference/google-cloud-storage/2.36.1/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.34.0](/java/docs/reference/google-cloud-storage/2.34.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.33.0](/java/docs/reference/google-cloud-storage/2.33.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.32.1](/java/docs/reference/google-cloud-storage/2.32.1/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.30.1](/java/docs/reference/google-cloud-storage/2.30.1/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.29.1](/java/docs/reference/google-cloud-storage/2.29.1/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.28.0](/java/docs/reference/google-cloud-storage/2.28.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.27.1](/java/docs/reference/google-cloud-storage/2.27.1/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.24.0](/java/docs/reference/google-cloud-storage/2.24.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.23.0](/java/docs/reference/google-cloud-storage/2.23.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.22.6](/java/docs/reference/google-cloud-storage/2.22.6/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.21.0](/java/docs/reference/google-cloud-storage/2.21.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.20.2](/java/docs/reference/google-cloud-storage/2.20.2/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.19.0](/java/docs/reference/google-cloud-storage/2.19.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.18.0](/java/docs/reference/google-cloud-storage/2.18.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.17.2](/java/docs/reference/google-cloud-storage/2.17.2/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.16.0](/java/docs/reference/google-cloud-storage/2.16.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.15.1](/java/docs/reference/google-cloud-storage/2.15.1/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.14.0](/java/docs/reference/google-cloud-storage/2.14.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.13.1](/java/docs/reference/google-cloud-storage/2.13.1/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.12.0](/java/docs/reference/google-cloud-storage/2.12.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.11.3](/java/docs/reference/google-cloud-storage/2.11.3/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.10.0](/java/docs/reference/google-cloud-storage/2.10.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.9.3](/java/docs/reference/google-cloud-storage/2.9.3/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.8.1](/java/docs/reference/google-cloud-storage/2.8.1/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.7.1](/java/docs/reference/google-cloud-storage/2.7.1/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.6.1](/java/docs/reference/google-cloud-storage/2.6.1/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.5.1](/java/docs/reference/google-cloud-storage/2.5.1/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.4.5](/java/docs/reference/google-cloud-storage/2.4.5/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.3.0](/java/docs/reference/google-cloud-storage/2.3.0/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.2.3](/java/docs/reference/google-cloud-storage/2.2.3/com.google.cloud.storage.JournalingBlobWriteSessionConfig)\n- [2.1.10](/java/docs/reference/google-cloud-storage/2.1.10/com.google.cloud.storage.JournalingBlobWriteSessionConfig) \n| **Beta**\n|\n|\n| This library is covered by the [Pre-GA Offerings Terms](/terms/service-terms#1)\n| of the Terms of Service. Pre-GA libraries might have limited support,\n| and changes to pre-GA libraries might not be compatible with other pre-GA versions.\n| For more information, see the\n[launch stage descriptions](/products#product-launch-stages). \n\n public final class JournalingBlobWriteSessionConfig extends BlobWriteSessionConfig implements BlobWriteSessionConfig.GrpcCompatible\n\nThere are scenarios in which disk space is more plentiful than memory space. This new [BlobWriteSessionConfig](/java/docs/reference/google-cloud-storage/latest/com.google.cloud.storage.BlobWriteSessionConfig) allows augmenting an instance of storage to produce [BlobWriteSession](/java/docs/reference/google-cloud-storage/latest/com.google.cloud.storage.BlobWriteSession)s which will buffer to disk rather than holding things in memory.\n\nIf we have disk available we can checkpoint the contents of an object to disk before\ntransmitting to GCS. The checkpointed data on disk allows arbitrary rewind in the case of failure\nbut allows the upload to happen as soon as the checkpoint ack is complete.\n\nDue to the details of how Resumable Upload Sessions are implemented in the GCS gRPC API this\nis possible. However, this approach will not work with the HTTP transports Resumable Upload\nSession spec.\nSee Also: [Storage#blobWriteSession(BlobInfo, BlobWriteOption...)](/java/docs/reference/google-cloud-storage/latest/com.google.cloud.storage.Storage#com_google_cloud_storage_Storage_blobWriteSession_), GrpcStorageOptions.Builder#setBlobWriteSessionConfig(BlobWriteSessionConfig) \n\nInheritance\n-----------\n\n[Object](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html) \\\u003e [BlobWriteSessionConfig](/java/docs/reference/google-cloud-storage/latest/com.google.cloud.storage.BlobWriteSessionConfig) \\\u003e JournalingBlobWriteSessionConfig \n\nImplements\n----------\n\ncom.google.cloud.storage.BlobWriteSessionConfig.GrpcCompatible \n\nInherited Members\n-----------------\n\n[BlobWriteSessionConfig.equals(Object)](/java/docs/reference/google-cloud-storage/latest/com.google.cloud.storage.BlobWriteSessionConfig#com_google_cloud_storage_BlobWriteSessionConfig_equals_java_lang_Object_) \n[BlobWriteSessionConfig.hashCode()](/java/docs/reference/google-cloud-storage/latest/com.google.cloud.storage.BlobWriteSessionConfig#com_google_cloud_storage_BlobWriteSessionConfig_hashCode__) \n[Object.clone()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#clone--) \n[Object.finalize()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#finalize--) \n[Object.getClass()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--) \n[Object.notify()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notify--) \n[Object.notifyAll()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notifyAll--) \n[Object.toString()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--) \n[Object.wait()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait--) \n[Object.wait(long)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-) \n[Object.wait(long,int)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-int-)\n\nMethods\n-------\n\n### equals(Object o)\n\n public boolean equals(Object o)\n\n**Overrides** \n[BlobWriteSessionConfig.equals(Object obj)](/java/docs/reference/google-cloud-storage/latest/com.google.cloud.storage.BlobWriteSessionConfig#com_google_cloud_storage_BlobWriteSessionConfig_equals_java_lang_Object_)\n\n### hashCode()\n\n public int hashCode()\n\n**Overrides** \n[BlobWriteSessionConfig.hashCode()](/java/docs/reference/google-cloud-storage/latest/com.google.cloud.storage.BlobWriteSessionConfig#com_google_cloud_storage_BlobWriteSessionConfig_hashCode__)"]]