Repository navigation
Conversation
|
Thanks for opening this pull request! The maintainers of this repository would appreciate it if you would create a changelog item based on your changes. |
The cleanup stopped a thread after 5 minutes without activity, also while a request (for example a large upload) still ran on it. The response of that request could then be lost, and the requests in the queue never ran, so their callers waited until their deadline. The pool now counts the callers of each thread, and the cleanup stops only threads without callers. This also removes the active flag, which was written without a lock (data race). A thread in the pool map is always running, because the pool stops a thread and removes it from the map under the same lock. Assisted-by: Claude:claude-opus-5-5
When a caller stops waiting (context canceled or deadline exceeded), Execute returns the context error, but the request stays in the queue. The thread then ran it anyway, and the requests behind it waited longer. The thread now skips a request when its context is done. Assisted-by: Claude:claude-opus-5-5
A user thread writes its own thread ID after it starts, but the logging code reads it from other goroutines without a lock. This happens when several requests of a new user arrive at the same time. The thread ID is now an atomic value. Assisted-by: Claude:claude-opus-5-5
The driver called these syscalls with the amd64 numbers (186, 122, 123) on all architectures. On arm64 these numbers are msgget, sched_setaffinity and sched_getaffinity, thus the user threads never changed their fsuid and all operations ran as the process user. New() only logs the failed privilege check and continues. x/sys/unix uses the correct number for each architecture. On amd64 the behaviour does not change. Assisted-by: Claude:claude-opus-5-5
rawe0
force-pushed
the
cephmount-thread-pool-followups
branch
from
October 30, 2026 15:23
2382468 to
aab811e
Compare
rawe0
marked this pull request as ready for review
October 30, 2026 15:24
Upload copied the request body to the file on the user thread. The speed of the client decided how long this took, and during that time all other requests of the user waited. All external accounts and public-link guests use one thread, thus one slow upload blocked all of them. The file is now opened on the user thread, which creates it with the user as owner and does the permission check. The data is copied outside the thread, because a write to an open file is not checked again. Download already works like this. The error from Close is now returned. CephFS can report write errors only when it flushes the data at close, and before this change such an upload reported success. Assisted-by: Claude:claude-opus-5-5
rawe0
force-pushed
the
cephmount-thread-pool-followups
branch
from
October 30, 2026 15:34
aab811e to
c1ad762
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.