Skip to content

fix: [ocisdev-1433] (#748) - #759

Merged
2403905 merged 1 commit into
mainfrom
fix/9.0/OCISDEV-1433
Oct 5, 2026
Merged

2403905 merged 1 commit into
mainfrom
fix/9.0/OCISDEV-1433

Conversation

@2403905

@2403905 2403905 commented Oct 5, 2026

Copy link
Copy Markdown
  • fix: Fixed the revok during the least/read operations and the mutex in a public shares

  • fix: [OCISDEV-1433] bound the machine auth call of the metadata storage

The cs3 metadata storage authenticates as a system user before every operation, and that Authenticate call carried no deadline. A gateway that accepted the connection but never answered it - because it was itself waiting on a stalled storage provider - parked the calling goroutine for the lifetime of the process, with no log output at all.

The call now runs on its own bounded context and logs a warning when the deadline is exhausted. The context returned to the caller deliberately keeps no deadline: callers run their own RPC on it after getAuthContext returns.

Adds the first tests for this package, including one that reproduces the unbounded wait against an in-process gateway that never answers.

  • fix: [OCISDEV-1433] detect grpc peers that stop answering

The grpc client connections of the pool were created without keepalive parameters, so a peer that stopped answering on an established connection - a black-holed node, a wedged process - was indistinguishable from a peer that was merely slow, and a request without a deadline waited for the lifetime of the process.

The clients now ping the peer while a request is in flight and fail the requests on a connection that does not answer, tunable with GRPC_CLIENT_KEEPALIVE_TIME and GRPC_CLIENT_KEEPALIVE_TIMEOUT. The servers got the matching enforcement policy so they accept those pings.

GRPC_MAX_CONNECTION_AGE is removed along with it. It closed healthy connections on a timer, never ended a request that was already in flight because the grace period was left at infinity, and fell back to doing nothing at all whenever its value had no unit suffix.

  • fix: fixed the lazy load mutex

  • move resolveLinkshares to the dedicated function

  • rewok the default keepalive.ClientParameters

  • update the public share manager

  • fix: Disable the resolution of public link shares when answering PROPFIND requests.

  • fix: Invalidate the cache after write. Moved the db copy from the persist label to the manager.

  • fix: fix unsafe type assertions, to avoid the panic

  • fix: The keepalive grpc clinet configuration updated


* fix: Fixed the revok during the least/read operations and the mutex in a public shares

* fix: [OCISDEV-1433] bound the machine auth call of the metadata storage

The cs3 metadata storage authenticates as a system user before every
operation, and that Authenticate call carried no deadline. A gateway that
accepted the connection but never answered it - because it was itself
waiting on a stalled storage provider - parked the calling goroutine for
the lifetime of the process, with no log output at all.

The call now runs on its own bounded context and logs a warning when the
deadline is exhausted. The context returned to the caller deliberately
keeps no deadline: callers run their own RPC on it after getAuthContext
returns.

Adds the first tests for this package, including one that reproduces the
unbounded wait against an in-process gateway that never answers.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* fix: [OCISDEV-1433] detect grpc peers that stop answering

The grpc client connections of the pool were created without keepalive
parameters, so a peer that stopped answering on an established connection - a
black-holed node, a wedged process - was indistinguishable from a peer that was
merely slow, and a request without a deadline waited for the lifetime of the
process.

The clients now ping the peer while a request is in flight and fail the requests
on a connection that does not answer, tunable with GRPC_CLIENT_KEEPALIVE_TIME
and GRPC_CLIENT_KEEPALIVE_TIMEOUT. The servers got the matching enforcement
policy so they accept those pings.

GRPC_MAX_CONNECTION_AGE is removed along with it. It closed healthy connections
on a timer, never ended a request that was already in flight because the grace
period was left at infinity, and fell back to doing nothing at all whenever its
value had no unit suffix.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* fix: fixed the lazy load mutex

* move resolveLinkshares to the dedicated function

* rewok the default keepalive.ClientParameters

* update the public share manager

* fix: Disable the resolution of public link shares when answering PROPFIND requests.

* fix: Invalidate the cache after write. Moved the db copy from the persist label to the manager.

* fix: fix unsafe type assertions, to avoid the panic

* fix: The keepalive grpc clinet configuration updated

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
@2403905
2403905 requested a review from a team as a code owner October 5, 2026 08:56
@kw-security

kw-security commented Oct 5, 2026 •

Copy link
Copy Markdown

✅ Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
✅ Open Source Security 0 0 0 0 0 issues
✅ Licenses 0 0 0 0 0 issues
✅ Code Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@2403905
2403905 merged commit 373f950 into main Oct 5, 2026
16 checks passed
@2403905
2403905 deleted the fix/9.0/OCISDEV-1433 branch October 5, 2026 09:16
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.

3 participants