Skip to content

Sync fork - #1

Open
kislaykishore wants to merge 1492 commits into
kislaykishore:masterfrom
GoogleCloudPlatform:master
Open

Sync fork#1
kislaykishore wants to merge 1492 commits into
kislaykishore:masterfrom
GoogleCloudPlatform:master

Conversation

@kislaykishore

Copy link
Copy Markdown
Owner

Sync fork

anushka567 and others added 30 commits March 23, 2026 14:38
…th updated representation (#4429)

* adding flag for symbolic link updated support

* make flag experimental

* adding flag for symbolic link updated support

* make flag experimental

* E2E tests for symlink creation

* whitespace cleanup

* lint fixes and flag update

* package rename

* test fixes

* refactor to test package

* remove obsolete file

* rename suites files
…4504)

### Description
Add benchmark tests to the repository for reference.

Ran benchmarks and below is the output.

goos: linux
goarch: amd64
pkg: github.com/googlecloudplatform/gcsfuse/v3/tracing
cpu: Intel(R) Xeon(R) CPU @ 2.80GHz
BenchmarkTrace/BenchmarkStartSpan_Otel-64         	 6454726	       183.4 ns/op	     240 B/op	       3 allocs/op
BenchmarkTrace/BenchmarkStartServerSpan_Otel-64   	 5038105	       238.5 ns/op	     272 B/op	       5 allocs/op
BenchmarkTrace/BenchmarkRecordError_Otel-64       	250574862	         4.787 ns/op	       0 B/op	       0 allocs/op
BenchmarkTrace/BenchmarkSetCacheReadAttributes_Otel-64         	56006740	        21.25 ns/op	       0 B/op	       0 allocs/op
BenchmarkTrace/BenchmarkPropagateTraceContext_Otel-64          	26608670	        45.93 ns/op	      48 B/op	       1 allocs/op
BenchmarkTrace/BenchmarkStartSpan_Noop-64                      	500905828	         2.392 ns/op	       0 B/op	       0 allocs/op
BenchmarkTrace/BenchmarkStartServerSpan_Noop-64                	445954076	         2.687 ns/op	       0 B/op	       0 allocs/op
BenchmarkTrace/BenchmarkRecordError_Noop-64                    	662981062	         1.818 ns/op	       0 B/op	       0 allocs/op
BenchmarkTrace/BenchmarkSetCacheReadAttributes_Noop-64         	786007035	         1.524 ns/op	       0 B/op	       0 allocs/op
BenchmarkTrace/BenchmarkPropagateTraceContext_Noop-64          	535797530	         2.230 ns/op	       0 B/op	       0 allocs/op
PASS
ok  	github.com/googlecloudplatform/gcsfuse/v3/tracing	12.012s

### Link to the issue in case of a bug fix.
b/490302363

### Testing details
1. Manual - NA
2. Unit tests - NA
3. Integration tests - NA

Added benchmark tests for reference. Ran them locally and pasted the result in the description with machine details as well.

### Any backward incompatible change? If so, please explain.
N/A
Remove the `key` string field from the `entry` struct in
`internal/cache/metadata/stat_cache.go`. The cache entry's key is
already managed externally by the underlying `lru.Cache` index, so
storing it redundantly inside the value struct inflates the cache's
memory usage unnecessarily.

By removing `key`, we save the string header overhead (16 bytes on
64-bit systems).
…y server (#4500)

* feat(force-dp-check): adding proxy server based test to validate

* running gRPC server and minor changes

* intermediate change

* working changes

* more cleanup

* review comments
…data for direct references (#4431)

* update symlink inode struct to include metadata

* Use deterministic timestamp for UT

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* fix: Fix data-race in lru-cache

- Fix a data race bug (fatal error: concurrent map iteration and map write) where `c.index` was previously iterated without holding a lock while other operations might insert concurrently.
- Refactored `Erase` and `EraseEntriesWithGivenPrefix` to use a common internal lock-free `eraseInternal` utility function.
- Ensured that `EraseEntriesWithGivenPrefix` will acquire the write lock once for the entire batch instead of taking it for every entry.
- Add benchmark tests for lru-cache erasure for a given prefix that show 18x performance improvement for erasing entries in bulk.

Before fix:
goos: linux
goarch: amd64
pkg: github.com/googlecloudplatform/gcsfuse/v3/internal/cache/lru
cpu: Intel(R) Xeon(R) CPU @ 2.20GHz
BenchmarkEraseEntriesWithGivenPrefix-16                     1628            747389 ns/op
BenchmarkEraseEntriesWithGivenPrefix_Concurrent-16      fatal error: concurrent map iteration and map write

After fix:
[----------] Finished with tests from CacheTest
goos: linux
goarch: amd64
pkg: github.com/googlecloudplatform/gcsfuse/v3/internal/cache/lru
cpu: Intel(R) Xeon(R) CPU @ 2.20GHz
BenchmarkEraseEntriesWithGivenPrefix-16                    30418             39771 ns/op
BenchmarkEraseEntriesWithGivenPrefix_Concurrent-16        242079              4817 ns/op
…inode to read the object contents to decipher target (#4432)

* open reader for reading object contents for symlink

* fix redundant error wrapping
* modify improved cd script

* change bash

* nit comments
…appropriately (#4527)

* resolve symlink target

* update symlink inode creation to appropriately resolve target

* drop redundant testcase

* update test to follow new semantics

* handle error while closing reader
…for monitoring integration tests (#4516)

* using standard log-file names

* Update SetupLogFiilePath function

* change var name
… better debugging (#4454)

### Description

Move logs before mount completion to info severity for better debugging.
This would be two part change where changes would be done to the jacobsa fuse as well.

Perf results for the same:

| Branch | File Size | Read BW | Write BW | RandRead BW | RandWrite BW |
| :--- | :--- | :--- | :--- | :--- | :--- |
| **Master** | 0.25 MiB | 566.44 MiB/s | 1.16 MiB/s | 77.77 MiB/s | 1.14 MiB/s |
| **PR** | 0.25 MiB | 569.83 MiB/s | 1.19 MiB/s | 80.75 MiB/s | 1.16 MiB/s |
| --- | --- | --- | --- | --- | --- |
| **Master** | 48.828 MiB | 4139.14 MiB/s | 77.31 MiB/s | 1512.77 MiB/s | 77.18 MiB/s |
| **PR** | 48.828 MiB | 4154.54 MiB/s | 79.51 MiB/s | 1520.67 MiB/s | 76.85 MiB/s |
| --- | --- | --- | --- | --- | --- |
| **Master** | 976.562 MiB | 4145.11 MiB/s | 36.44 MiB/s | 853.78 MiB/s | 38.27 MiB/s |
| **PR** | 976.562 MiB | 4114.28 MiB/s | 34.66 MiB/s | 932.62 MiB/s | 38.45 MiB/s |

doesn't seem to have any issues as such

### Link to the issue in case of a bug fix.
b/469985284

### Testing details
1. Manual - 
    Ran the gcsfuse process locally and then verified that the logs coming in from gcsfuse alone before mount process is logged at INFO level.
    
<img width="1141" height="671" alt="Screenshot 2026-03-25 at 12 02 53 PM" src="https://github.com/user-attachments/assets/b43fd3b6-0a56-481c-83b1-71d82d95984a" />

Note: In the screenshot all the logs before mount completion that are not from jacobas/fuse or fuse_debug are logged at INFO level.

2. Unit tests - NA
3. Integration tests - NA

### Any backward incompatible change? If so, please explain.
N/A
* Add experimental-file-cache-disable-size-calculation-fix

opt-out by experimental-file-cache-disable-size-calculation-fix

Rounds up the sizes of files by block-size
of cache-dir while accounting for them from
file-cache-max-size-mb.
It is enabled by default, but can be disabled
by setting the new hidden flag
experimental-file-cache-disable-size-calculation-fix
to false on mount.

* add unit tests for the new flag

* address gemini comment

* rename flag

experimental-file-cache-disable-size-calculation-fix -> file-cache-experimental-disable-size-calculation-fix

* address more gemini comments

* Disable size-calc-fix if is-sparse is true

* Add more unit tests for the changes

* Fix unit tests and collision with sparse-mode

Size-calc-fix is disabled when sparse-mode is on.

Added more unit tests specific to size-calc-fix being on.

In existing unit tests, enabled size-calc-fix as it's
going to be enabled by default.

* fix log for disable size-calc-fix when sparse-mode is on

* address self-review comments

* remove dead code

* minor formatting improvement

* address a review comment

* Replace sizeCalc function with blockSize stored in FileInfo

volumeBlockSize -> cacheDirVolumeBlockSize

add unit test Test_NewCacheHandler_WithoutSizeCalcFix

add better comments

* add a unit test case

* address gemini comment

* fix failing unit tests

* address review comments

* FileInfo{...} -> NewFile(...)

* moved disk_util.go to internal/util/diskutil

* Some more of FileInfo{...} -> NewFile(...)

* address review comments

* address a review comment

* address review command and more cleanup and unit test cases

* address review comment

* address comment

* add reference to cockrpackdb PR for frsize over Bsize
…es packages (#4513)

* using hardcoded cache dirs for readonly and read_large_files package

* format test fix

* empty commit
…ory error (#4499)

* add about fuse: writeMessage: no such file or directory error

* Update docs/troubleshooting.md

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update docs/troubleshooting.md

Co-authored-by: Kislay Kishore <kislayk@google.com>

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Kislay Kishore <kislayk@google.com>
#4544)

* add retry function, use retry mechanism for log-rotation

* lint correction

* Apply suggestion from @gemini-code-assist[bot]

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…d use new default for chunkRetryDeadline (#4473)

* feat: add configurable chunk-retry-deadline-secs to manage resumable upload timeouts

* style: fix inline comment format consistency

* refactor: qualify NewSyncerBucket calls with gcsx package and assign to variables in tests

* refactor: improve readability of NewSyncerBucket arguments in symlink_test.go
* remove unused vars, add emulator tests to table

* Remove changes from create_package_runtime_table.sh
…during package runs. (#4542)

* fix creds file corruption in multi package runs tests

* refactor: move localKeyFilePath from global scope to local scope in admin_permissions_test.go

* style: fix indentation and alignment of global variables in admin_permissions_test.go
* e2e visualization

* add python3-rich to improved_run_e2e script

* refactor: improve readability and maintainability of runtime table generation script using constants and descriptive variables

---------

Co-authored-by: Mohit Yadav <mohitkyadav@google.com>
* Optimize integer to string conversion

Replaced `fmt.Sprintf("%d", value)` with `strconv.FormatInt(..., 10)` and `strconv.Itoa(...)` in `internal/cache/data/file_info.go` and `internal/kernelparams/kernelparams.go`.
This avoids the reflection and format parsing overhead of the `fmt` package, leading to faster execution and fewer allocations.
* perf:⚡ Bolt: io_renderer string builder optimization
 
Use a pre-allocated byte slice and `strconv.AppendInt` to minimize memory allocations.
vipnydav and others added 30 commits July 26, 2026 09:44
…api-stall-retry flag (#4942)

### Description
PR #4907 ("extend control client stall retries to regional buckets and remove experimental flag") deprecated the `experimental-nonrapid-folder-api-stall-retry` flag and removed it from `gcsfuse`. However, the flag remained in `tools/integration_tests/emulator_tests/control_client_stall/control_client_stall_test.go`, causing emulator tests to fail with `unknown flag: --experimental-nonrapid-folder-api-stall-retry`.

This PR removes the deprecated flag from the emulator test flags.


### Testing details
1. Manual - Executed `control_client_stall` emulator test suite against local `storage-testbench` emulator and verified all tests pass cleanly.
2. Unit tests - NA
3. Integration tests - Executed `go test ./tools/integration_tests/emulator_tests/control_client_stall/...`.

### Any backward incompatible change? If so, please explain.
No
* test fixes

* test fixes

* fixing github actions

* fixing github actions

* gemini comments

* AAA format
…m endpoint (#4946)

Skipping the creation of the storageControlClient when a custom REST endpoint (containing /storage/v1/) is provided in the storage client configuration.
…age client with number of attempts. (#4921)

### Description
This PR simplifies the storage retry framework by completely removing the `TotalRetryBudget` (previously defaulting to a 5-minute timeout) across the codebase. GCSFuse retry loops will now rely purely on the number of attempts (`MaxAttempts`) and per-attempt deadlines, making retry behaviors more deterministic and eliminating arbitrary timeouts.
## Key Changes
* **`internal/storage/storageutil/retry.go`**: 
  * Removed the `TotalRetryBudget` field from `RetryConfig` and its associated default values.
  * Simplified `ExecuteWithCustomShouldRetryAtLogLevel` by dropping redundant parent context bindings (`context.WithCancel` and `context.WithTimeout` wrappers) since a global budget enforcement is no longer needed. The attempt execution and jitter backoff now act directly on the provided `ctx`.
* **`internal/storage/storage_handle.go`**:
  * Removed the unused `directPathDetectionMaxRetryDuration` (1 minute). The DirectPath connectivity stat call now relies strictly on its 5-attempt maximum limit (`directPathDetectionMaxAttempts`).
* **Test Cleanup (`retry_test.go`, `control_client_wrapper_test.go`)**:
  * Removed tests that specifically validated the exhaustion of the 5-minute global budget.
  * Cleaned up test helper function signatures (e.g. `newHelperRetryWrapper`) to stop propagating the budget duration argument across the test suite.


### Link to the issue in case of a bug fix.
b/441413941

### Testing details
1. Manual - NA
2. Unit tests - NA
3. Integration tests - Part of pre-submit

### Any backward incompatible change? If so, please explain.
… creation (#4953)

Remove condition and use storage client flow for all bucket runs when setting up implicit directory structures in implicit_dir integration tests.
* Added httpwithmtls option for client protocol

* Removed unwanted changes

* review comments

* httpwithmtls to httpmtls

* remove the unwanted changes
…4950)

* Supporting path for UDS endpoint in token-url

* PR comments
…estSize16MiB e2e tests (#4959)

Removing TestKernelReaderLargeReadSuite & TestWriteMaxRequestSize16MiB e2e tests. These were added to validate the new large read requests and 1MB write requests. These need to read the logs to verify which is failing in GKE. GKE already has tests to validate the same functionality. Hence, removing these tests from this release branch only.
…int64 instead of time.Time (#4938)

* perf: optimize gcs.MinObject updated and finalized timestamps

* added String() to MinObject for cleaner logs
…correctly (#4960)

### Description
This pull request fixes the environment variable parsing for the mounted directory in the integration test suite. While `test_config.yaml` successfully evaluated the `MOUNTED_DIR` environment variable, the fallback logic inside `setup.go` did not cleanly map it to the underlying configuration structs when invoked locally or when the flag/env var was passed directly. 

Changes included:
* Enabled direct fallback to `os.Getenv("MOUNTED_DIR")` within the `setup.MountedDirectory()` global flag parser, mirroring the existing fallback behavior for `TestBucket()`.
* Updated `setup.SetGlobalVars` to explicitly fallback `cfg.GKEMountedDirectory` to the resolved command-line flag/environment string if it was absent in the YAML config.
* Added clarifying documentation comments to the flag registrations to explicitly denote environment variable support and order of precedence.

### Link to the issue in case of a bug fix.
N/A

### Testing details
1. Manual - Verified that the integration tests can dynamically parse the `MOUNTED_DIR` environment variable through `go test` and fallback correctly in local executions.
2. Unit tests - N/A
3. Integration tests - via Kokoro

### Any backward incompatible change? If so, please explain.
N/A
* fix(inode): report symlink size as the length of its target

SymlinkInode.Attributes never assigned its size return value, so stat reported
a size of 0 for every symlink. stat(2) requires st_size of a symlink to be the
length of the pathname it contains, and the intended semantics were already
documented on UpdateSize just above ("The size of a symlink is its target's
length, not the backing object's size") - Attributes simply did not implement
them. For a legacy symlink the backing object is empty, which is why the
reported size was zero rather than merely wrong.

getAttributes is the only caller of Attributes, and the rename path reads
Source() rather than Attributes, so the change is scoped to the size reported
to the kernel.

Four existing assertions pinned the old value and have been updated, in
symlink_test.go, local_modifications_test.go, caching_test.go and
foreign_modifications_test.go.

Issue: #2273

* chore: empty commit to trigger Kokoro

The rebase landed while the PR was briefly closed, so no synchronize
event reached Kokoro. Tree is identical to bb68de1.
…4967)

* refactor: update test directory setup to use helper methods in GKE mode

* refactor: split FinalizeRapidWritesTestSuite into explicit Enabled and Disabled test suites for clearer configuration handling

* test: add integration test suites for finalize-file-for-rapid flag configurations

* test: add conditional test skipping based on finalize-file-for-rapid flag configuration

* remove redundante variable and use ref.
* 3.11.2 release version updates to master

* adding new line
)

* Handling not found seperately compared to ESTALE during openFile

* fixing the tests

* gemini comments

* PR comments
…xt to standard library context (#4970)

* refactor: migrate context package imports from golang.org/x/net/context to standard library context

* chore: move golang.org/x/net to indirect dependencies in go.mod

* fix: address context leaks by ensuring proper cancellation across tests and random reader operations

* fix: ensure context cancellation is deferred in random reader error handling
Adds the ssh-connection-management skill to .agents/skills/ to guide persistent master SSH socket multiplexing setup, verification, and troubleshooting.
…nderflow (#4975)

### Description
Track entry size internally within lru.entry to decouple LRU currentSize accounting
from dynamic caller-side object mutations (e.g. sparse file downloads). When evicting
or erasing an entry, subtract the internally tracked entry size instead of dynamically
invoking Value.Size().

### Link to the issue in case of a bug fix.
Fixes https://b.corp.google.com/issues/533320736

### Testing details
1. Manual - NA
2. Unit tests - Added unit tests in internal/cache/lru/lru_test.go and verified all LRU tests pass cleanly under -race:
   go test -mod=readonly -race -v ./internal/cache/lru/...
3. Integration tests - NA

### Any backward incompatible change? If so, please explain.
No
### Description
Add a hidden configuration flag (`--enable-grpc-read-checksums`) and wire it up through `bucketHandle` initialization. This allows us to explicitly pass `storage.WithDisableReaderChecksum()` to the Go SDK, opting out of CRC32C software checksum calculations during chunk downloads for gRPC protocol. This optimizes CPU utilization and throughput.

*(Note on Checksum Behavior: When this flag is enabled and checksum validations are active, if the Go SDK calculates a CRC32C hash that does not match the server's `x-goog-hash` header, the SDK stream will immediately abort and return a checksum mismatch error to the caller. This triggers a read failure inside GCSFuse, which is propagated to the user-space application as an I/O error (EIO), leaving it up to the application to retry the read if desired.).*

### Link to the issue in case of a bug fix.
Fixes b/530057360

### Testing details
Relying on Go SDK tests mainly for now.
1. Manual - Verified configuration parser routing and internal storage flag calculation logic.
2. Unit tests - Added a table-driven test (`TestNewReaderWithReadHandleMethod_GrpcChecksumsFlag`) validating that both flag boolean paths successfully instantiate the Go SDK reader without triggering underlying struct panics or wiring errors.
3. Integration tests - Handled in Go SDK. Will be added later in emulator tests.

### Any backward incompatible change? If so, please explain.
N/A
* only dir fixes for getStorageLayout

* logging and test changes

* added integration test

* review comments

* refactor tests
* build(deps): bump msgpack

Bumps [msgpack](https://github.com/msgpack/msgpack-python) from 1.1.0 to 1.2.1.
- [Release notes](https://github.com/msgpack/msgpack-python/releases)
- [Changelog](https://github.com/msgpack/msgpack-python/blob/main/CHANGELOG.md)
- [Commits](msgpack/msgpack-python@v1.1.0...v1.2.1)

---
updated-dependencies:
- dependency-name: msgpack
  dependency-version: 1.2.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump pyasn1

Bumps [pyasn1](https://github.com/pyasn1/pyasn1) from 0.6.3 to 0.6.4.
- [Release notes](https://github.com/pyasn1/pyasn1/releases)
- [Changelog](https://github.com/pyasn1/pyasn1/blob/main/CHANGES.rst)
- [Commits](pyasn1/pyasn1@v0.6.3...v0.6.4)

---
updated-dependencies:
- dependency-name: pyasn1
  dependency-version: 0.6.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump pyasn1 in /perfmetrics/scripts/micro_benchmarks

Bumps [pyasn1](https://github.com/pyasn1/pyasn1) from 0.6.3 to 0.6.4.
- [Release notes](https://github.com/pyasn1/pyasn1/releases)
- [Changelog](https://github.com/pyasn1/pyasn1/blob/main/CHANGES.rst)
- [Commits](pyasn1/pyasn1@v0.6.3...v0.6.4)

---
updated-dependencies:
- dependency-name: pyasn1
  dependency-version: 0.6.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump setuptools in /perfmetrics/scripts/micro_benchmarks

Bumps [setuptools](https://github.com/pypa/setuptools) from 80.9.0 to 83.0.0.
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](pypa/setuptools@v80.9.0...v83.0.0)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-version: 83.0.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump httplib2 from 0.22.0 to 0.32.0 in /perfmetrics/scripts

Bumps [httplib2](https://github.com/httplib2/httplib2) from 0.22.0 to 0.32.0.
- [Changelog](https://github.com/httplib2/httplib2/blob/master/CHANGELOG)
- [Commits](httplib2/httplib2@v0.22.0...v0.32.0)

---
updated-dependencies:
- dependency-name: httplib2
  dependency-version: 0.32.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump httplib2

Bumps [httplib2](https://github.com/httplib2/httplib2) from 0.31.0 to 0.32.0.
- [Changelog](https://github.com/httplib2/httplib2/blob/master/CHANGELOG)
- [Commits](httplib2/httplib2@v0.31.0...v0.32.0)

---
updated-dependencies:
- dependency-name: httplib2
  dependency-version: 0.32.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump setuptools in /perfmetrics/scripts

Bumps [setuptools](https://github.com/pypa/setuptools) from 80.9.0 to 83.0.0.
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](pypa/setuptools@v80.9.0...v83.0.0)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-version: 83.0.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…on handle (#4993)

Disable Go SDK internal retries for the BucketHandle used during verifyDirectPathConnectivity by setting Retryer(storage.WithMaxAttempts(1)) directly on bucketHandle. Previously, sc.SetRetry(storage.WithMaxAttempts(1)) was called after sc.Bucket(bucketName) had already cloned the client retry config, causing bucketHandle to ignore SetRetry and execute 15-second internal SDK retries per attempt when backend returned UNAVAILABLE for cross-location requests.

Link to issue: https://b.corp.google.com/issues/542608390

Testing details:

1. Manual - Verified fast fallback using Go reproducer script.

2. Unit tests - Passed go test ./internal/storage/...

3. Integration tests - Passed go test -c ./tools/integration_tests/mount_timeout
Adding support for OTEL logging in GCSFuse as well.
#4991)

Adding support for specifying a custom Mount ID to be included in mount instance id and refactors only-dir path rationalization so that it is normalized early during configuration processing.
… Server readiness during mount (#4947)

* feat(auth): retry OAuth2/STS token acquisition and Metadata Server readiness during mount

* feat(auth): retry OAuth2/STS token acquisition and Metadata Server readiness during mount

- Extended determineRetryAction(err) to natively classify *oauth2.RetrieveError (OAuth2/STS) and *metadata.Error (MDS) HTTP status codes (400, 408, 429, 500-599) as transient retryable errors (retryTransientMDSError).
- Token acquisition and refresh errors are caught and retried automatically by GCSFuse's existing mount-time (ShouldRetryOnMount) and runtime (ShouldRetryWithoutLogging) retry loops.
- Enforces fail-fast behavior on non-transient authentication and permission errors (401, 403, 404) during mount and file I/O operations.
- Removed retry wrapper around cred.UniverseDomain(ctx), allowing immediate fallback to googleapis.com if MDS is unreachable during initial setup.

Bug: b/538079553, b/538080458
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.