aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/llvm14/lib/Support/UnicodeCaseFold.cpp
diff options
context:
space:
mode:
authorcoteeq <coteeq@yandex-team.com>2024-07-09 17:50:53 +0300
committercoteeq <coteeq@yandex-team.com>2024-07-09 18:14:11 +0300
commit1380afae2babc6dfd840720c694613ec10d3c9ac (patch)
tree20de81a302055b3f6df40bec1dc5fc1ca70731c2 /contrib/libs/llvm14/lib/Support/UnicodeCaseFold.cpp
parent1a588ac4a33af75cc93036c1c23220dd334eb70f (diff)
downloadydb-1380afae2babc6dfd840720c694613ec10d3c9ac.tar.gz
TAsyncSemaphore's GetReadyEvent should really be non-cancelable
The `ReadyEvent_` may be shared between unrelated entities and cancellation of one entity should not trigger cancellation of another via the semaphore. Specifically, the bug was found when debugging RemoteCopy operation. RemoteCopy job has many tasks that copy different parts of different chunks. These tasks are bounded via a common semaphore (a single semaphore for whole job). These tasks are also time-bounded via `.WithTimeout`. When semaphore is contended, tasks which are waiting on the semaphore fail to complete within timeout and get cancelled. And this cancellation is propagated to the semaphore, which cancels all tasks, which were waiting on this semaphore, even if they were copying completely unrelated chunks and even could copy chunks within their timeout. 3e49c1f30fd3e157196b8b8d76a06b6672780681
Diffstat (limited to 'contrib/libs/llvm14/lib/Support/UnicodeCaseFold.cpp')
0 files changed, 0 insertions, 0 deletions