Skip to content

Releases: GoogleCloudPlatform/gcsfuse

Gcsfuse v2.10.0

12 Feb 12:20
7bbde84
Compare
Choose a tag to compare

Bug Fixes & Improvements:

  • Switched from OpenCensus to OTel as the default for metrics computation. (#2967)

Gcsfuse v2.9.1

11 Feb 08:58
Compare
Choose a tag to compare

Streaming Writes:

Streaming writes is a new write path that uploads data directly to Google Cloud Storage (GCS) as it's written. The previous, and currently default write path temporarily stages the entire write in a local directory, uploading to GCS on close/fsync. This reduces both latency and disk space usage, making it particularly beneficial for large, sequential writes such as checkpoints. To enable streaming writes, use the following:

Command-line flag: --enable-streaming-writes
Configuration file: write: enable-streaming-writes:true

This will become the default write path in the future.

Memory Usage: Each file opened for streaming writes will consume approximately 64MB of RAM during the upload process. This memory is released when the file handle is closed. This should be considered when planning resource allocation for applications using streaming writes.

Important Considerations and Caveats:

  1. New files, Sequential Writes: Streaming writes are designed for sequential writes to a new, single file only. Modifying existing files, or doing out-of-order writes (whether from the same file handle or concurrent writes from multiple file handles) will cause GCSFuse to automatically revert to the existing behavior of staging writes to a temporary file on disk. An informational log message will be emitted when this fallback occurs.

  2. File System Semantics Change:

    • FSync Operation does not finalize the Object: When streaming writes are enabled, the fsync operation will not finalize the object on GCS. Instead, the object will be finalized only when the file is closed. This is a key difference from the previous behavior and should be considered when using streaming writes. Relying on fsync for data durability with streaming writes enabled is not recommended. Data is only guaranteed to be on GCS after the file is closed.
    • Read Operations During Write: Today the application can read the data when the writes are in progress for that file. With buffered writes, the application will not be able to read until the object is finalized i.e, fclose() is called. Applications should ensure that they do not attempt to read from a file while it is being written to using streaming writes.
  3. Write Stalls and Chunk Uploads: Streaming writes do not currently implement chunk-level timeouts or retries. Write operations may stall, and chunk uploads that encounter errors will eventually fail after the default 32-second deadline.

  4. Known Issue: EIO error code returned instead of ESTALE for write conflicts solely with gRPC client protocol [HTTP is default].

Bug Fixes & Improvements:

  • Fixes a bug that causes rename operation to fail when a file is open with staged writes and streaming writes enabled. (#2975)

Gcsfuse v2.9.0

05 Feb 09:30
da12050
Compare
Choose a tag to compare

New Features:

  • Streaming writes has been introduced. However, due to issue #2975 GCSfuse version 2.9.1 should be used instead to support streaming writes.

Bug Fixes and Improvements

  • GCSFuse would crash if a file-path with basename "\n" is looked up. It's now fixed. GCSFuse now correctly returns ENOENT (File Not Found) in such cases. (#2939)
  • GCSFuse now returns EEXIST error code instead of EIO when attempting to create a directory that already exists on HNS buckets. (#2935)

Known Issue

  • A bug that causes rename operation to fail when a file is open with staged writes and streaming writes enabled. This is fixed in the next version v2.9.1

What's Changed

New Contributors

Full Changelog: v2.8.0...v2.9.0

Gcsfuse v2.8.0

20 Jan 07:02
5322cff
Compare
Choose a tag to compare

Bug Fixes & Improvements

Write Precondition Checks

Prior to v2.8.0, GCSfuse ignored precondition requests when the same object was being written to from different mounts simultaneously. Now, if a file being written to has already been modified or deleted by another mount, GCSfuse will return an ESTALE error. The new behavior provides users with a clear indication of potential conflicts between different mounts.

gRPC

Added retries for authenticated requests.

Negative Stat Cache

The default time to live (TTL) for stat-cache negative entries is reduced from 60 seconds to 5 seconds with this release. This is done to ensure improved coherency in multi-node AI/ML tasks.

Dependency Upgrades / CVE fixes

Upgraded dependencies for better stability PR#2800 PR#2801 PR#2847

What's Changed

New Contributors

Full Changelog: v2.7.0...v2.8.0

Gcsfuse v2.7.0

06 Jan 10:45
6ae0e39
Compare
Choose a tag to compare

Write Stability improvements: Reduces write tail latencies by increasing the number of retries in case of a write operation stall. The retries are configured to kick in if the stall is greater than 10 seconds. This feature will enhance the application's ability to successfully complete write operations, especially for large files such as checkpoint writes.

Bug Fixes & Improvements:

  1. gRPC: Fixed a rare pre-condition error in gRPC client protocol. The pre-condition error arises when moving a directory to an empty directory. PR#2838
  2. Negative metadata caches entries upon the deletion of an object/folder. PR#2822

Dependency Upgrades / CVE fixes:

  1. Fixing CVE in the crypto library. PR #2809
  2. Upgraded dependencies for better stability
    i. go-lang version from 1.23.3 to 1.23.4
    ii. Other dependency upgrade
    PR#2762 , PR#2756, PR#2757, PR#2758, PR#2759, PR#2760, PR#2761, PR#2731

Gcsfuse v2.5.2

18 Dec 06:23
Compare
Choose a tag to compare

Dependency Upgrades / CVE fixes:
This release is built on top of v2.5.1 with the additional security/CVE fixes for indirect dependency x/crypto library.

Gcsfuse v2.6.0

13 Dec 07:37
7004b57
Compare
Choose a tag to compare

gRPC:

  • A new gRPC client version provides significant read performance improvements at lower CPU utilization.
  • Allowlist access is no longer needed to use gRPC. To use gRPC, pass the cli flag --client-protocol=grpc OR add gcs-connection:client-protocol: grpc in the mount-config file.
  • Known issues:
    • gRPC: File system write operation hangs while repeatedly writing over a single > 16MiB file - Issue#2784
    • gRPC: File system returns Input/output error while repeatedly writing over a single < 16MiB file - Issue#2783

List Payload Reduction:

  • The Cloud Storage ListObjects API now retrieves only essential GCS object attributes required for serving list requests, resulting in significantly less response payloads and reduced latency. PR#2627

Bug Fixes & Improvements:

  • All flags are now supported in the persistent mounting via /etc/fstab. PR#2478
  • SIGTERM to unmount: Sending SIGTERM signal to GCSFuse process will now unmount the filesystem.
  • Enhanced error handling for background processes now captures runtime crash logs. Users can specify a log file path to store these logs (the file will have a .stderr extension).

Gcsfuse v2.5.1

15 Oct 05:45
Compare
Choose a tag to compare

Bug Fixes:
Improved error handling: GCSFuse will now retry requests to hierarchical namespace bucket APIs that encounter deadline exceeded errors. This improves stability and prevents unnecessary failures, especially in high latency environments.

Gcsfuse v2.5.0

23 Sep 08:35
07d3bd4
Compare
Choose a tag to compare
  • Hierarchical Namespace Enabled Buckets: With this release users can also mount buckets with hierarchical namespace enabled. HNS-enabled buckets offer several advantages over standard buckets when used with cloud storage fuse:
    • Renaming directories is now supported natively with Hierarchical Namespace Buckets, where Rename operation is fast and atomic to benefit workloads such as AI/ML checkpointing.
    • Users don't need to specify the --implicit-dirs command-line option when using hierarchical namespace enabled buckets. HNS buckets inherently understand directories, so gcsfuse does not need to simulate directories using placeholder objects ( 0-byte objects ending with '/' ).
    • Kernel’s Lookup operations are also improved in HNS buckets. The Objects.list api is replaced with a more efficient Folder:get api.
  • Config CLI Parity:
    • All params in config-file will be available as CLI flags and vice versa going forward. Documentation links:
    • Deprecated and hidden flags won't show up in the help-doc any more.
  • Write Enhancements:
    • Information of newly created files is added to the type cache. This helps reduce an additional GCS list call if the bucket has been mounted with –implicit-dirs flag. (PR#2303)
  • Deprecated - The flags --debug_gcs and --debug_fuse flags are now deprecated. Set --log-severity=TRACE to achieve the same behavior.

Gcsfuse v2.4.1

12 Sep 06:47
v2.4.1
bff9b25
Compare
Choose a tag to compare
  • Bug Fixes & Improvements:
    • Fix for os.RemoveAll(directory) failure with kernel list cache and remote file addition: PR#2163.
    • Fixed an issue in listing during creation of files in the same directory (Issue#2220, PR#2237).
    • Additional performance improvements when using Parallel downloads (PR#2287).
  • Metrics:
    • Categorize the various (approximately 150) fs_errors into a handful of categories. This helps reduce the upper bound of cardinality of these error labels which avoids it from getting dropped by the Google Cloud Metrics pipeline (PR#2321, PR#2382, PR#2390).
    • Change unit of ops and file-cache latency metrics to microseconds to improve the resolution of these metrics (PR#2380).
  • Dependency Upgrades / CVE fixes: