summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordann239 <[email protected]>2026-04-29 13:05:49 +0300
committerdann239 <[email protected]>2026-04-29 13:36:58 +0300
commitecec96bec80b2bb134672a52de4d67eca8cd480a (patch)
tree8c5cf1a30bc9e204f24e53032e64ab00c383387b
parentde0eeebe107fc761c301eca66c9e05dd7d599808 (diff)
YT_DECLARE_SPIN_LOCK whack-a-mole 2: electric boogaloo, Theatrical Cut
commit_hash:946123c814d23e070516ef5f7d339cf6025547b6
-rw-r--r--library/cpp/yt/threading/at_fork.cpp3
-rw-r--r--library/cpp/yt/threading/fork_aware_rw_spin_lock.h4
-rw-r--r--library/cpp/yt/threading/fork_aware_spin_lock.h4
-rw-r--r--library/cpp/yt/threading/rw_spin_lock.h4
-rw-r--r--library/cpp/yt/threading/spin_lock.h4
-rw-r--r--library/cpp/yt/threading/unittests/recursive_spin_lock_ut.cpp4
-rw-r--r--library/cpp/yt/threading/unittests/rw_spin_lock_ut.cpp12
-rw-r--r--library/cpp/yt/threading/unittests/spin_lock_count_ut.cpp8
-rw-r--r--yt/yt/core/concurrency/unittests/async_rw_lock_ut.cpp2
-rw-r--r--yt/yt/core/misc/unittests/async_slru_cache_ut.cpp2
-rw-r--r--yt/yt/core/rpc/per_key_request_queue_provider.h2
11 files changed, 26 insertions, 23 deletions
diff --git a/library/cpp/yt/threading/at_fork.cpp b/library/cpp/yt/threading/at_fork.cpp
index bcf05f0c3b8..040047646ea 100644
--- a/library/cpp/yt/threading/at_fork.cpp
+++ b/library/cpp/yt/threading/at_fork.cpp
@@ -46,7 +46,7 @@ public:
private:
DECLARE_LEAKY_SINGLETON_FRIEND()
- TWriterStarvingRWSpinLock ForkLock_;
+ YT_DECLARE_SPIN_LOCK(TWriterStarvingRWSpinLock, ForkLock_);
struct TAtForkHandlerSet
{
@@ -137,4 +137,3 @@ TWriterStarvingRWSpinLock* GetForkLock()
////////////////////////////////////////////////////////////////////////////////
} // namespace NYT::NThreading
-
diff --git a/library/cpp/yt/threading/fork_aware_rw_spin_lock.h b/library/cpp/yt/threading/fork_aware_rw_spin_lock.h
index 1fa1dd737b4..9a23b1f3c42 100644
--- a/library/cpp/yt/threading/fork_aware_rw_spin_lock.h
+++ b/library/cpp/yt/threading/fork_aware_rw_spin_lock.h
@@ -15,8 +15,8 @@ public:
TForkAwareReaderWriterSpinLock(const TForkAwareReaderWriterSpinLock&) = delete;
TForkAwareReaderWriterSpinLock& operator =(const TForkAwareReaderWriterSpinLock&) = delete;
- // TODO(babenko): make use of location.
- explicit constexpr TForkAwareReaderWriterSpinLock(const ::TSourceLocation& /*location*/)
+ explicit constexpr TForkAwareReaderWriterSpinLock(const ::TSourceLocation& location)
+ : SpinLock_(location)
{ }
void AcquireReader() noexcept;
diff --git a/library/cpp/yt/threading/fork_aware_spin_lock.h b/library/cpp/yt/threading/fork_aware_spin_lock.h
index 99acf6ec0ec..c4a6ae2ba85 100644
--- a/library/cpp/yt/threading/fork_aware_spin_lock.h
+++ b/library/cpp/yt/threading/fork_aware_spin_lock.h
@@ -21,8 +21,8 @@ public:
constexpr TForkAwareSpinLock() = default;
- // TODO(babenko): make use of location.
- explicit constexpr TForkAwareSpinLock(const ::TSourceLocation& /*location*/)
+ explicit constexpr TForkAwareSpinLock(const ::TSourceLocation& location)
+ : SpinLock_(location)
{ }
void Acquire() noexcept;
diff --git a/library/cpp/yt/threading/rw_spin_lock.h b/library/cpp/yt/threading/rw_spin_lock.h
index 0b29e0c7073..a530d556b76 100644
--- a/library/cpp/yt/threading/rw_spin_lock.h
+++ b/library/cpp/yt/threading/rw_spin_lock.h
@@ -181,7 +181,9 @@ using TReaderWriterSpinLock = NDetail::TUncheckedReaderWriterSpinLock;
//! A variant of TReaderWriterSpinLock occupying the whole cache line.
class alignas(CacheLineSize) TPaddedReaderWriterSpinLock
: public TReaderWriterSpinLock
-{ };
+{
+ using TReaderWriterSpinLock::TReaderWriterSpinLock;
+};
////////////////////////////////////////////////////////////////////////////////
diff --git a/library/cpp/yt/threading/spin_lock.h b/library/cpp/yt/threading/spin_lock.h
index f090f306f68..a69b83a3001 100644
--- a/library/cpp/yt/threading/spin_lock.h
+++ b/library/cpp/yt/threading/spin_lock.h
@@ -70,7 +70,9 @@ private:
//! A variant of TSpinLock occupying the whole cache line.
class alignas(CacheLineSize) TPaddedSpinLock
: public TSpinLock
-{ };
+{
+ using TSpinLock::TSpinLock;
+};
////////////////////////////////////////////////////////////////////////////////
diff --git a/library/cpp/yt/threading/unittests/recursive_spin_lock_ut.cpp b/library/cpp/yt/threading/unittests/recursive_spin_lock_ut.cpp
index b5b75d75fff..f5a36880944 100644
--- a/library/cpp/yt/threading/unittests/recursive_spin_lock_ut.cpp
+++ b/library/cpp/yt/threading/unittests/recursive_spin_lock_ut.cpp
@@ -12,7 +12,7 @@ namespace {
TEST(TRecursiveSpinLockTest, SingleThread)
{
- TRecursiveSpinLock lock;
+ YT_DECLARE_SPIN_LOCK(TRecursiveSpinLock, lock);
EXPECT_FALSE(lock.IsLocked());
EXPECT_TRUE(lock.TryAcquire());
EXPECT_TRUE(lock.IsLocked());
@@ -31,7 +31,7 @@ TEST(TRecursiveSpinLockTest, SingleThread)
TEST(TRecursiveSpinLockTest, TwoThreads)
{
- TRecursiveSpinLock lock;
+ YT_DECLARE_SPIN_LOCK(TRecursiveSpinLock, lock);
TEvent e1, e2, e3, e4, e5, e6, e7;
std::jthread t1([&] {
diff --git a/library/cpp/yt/threading/unittests/rw_spin_lock_ut.cpp b/library/cpp/yt/threading/unittests/rw_spin_lock_ut.cpp
index e987a967a83..c3fbb5cc0b1 100644
--- a/library/cpp/yt/threading/unittests/rw_spin_lock_ut.cpp
+++ b/library/cpp/yt/threading/unittests/rw_spin_lock_ut.cpp
@@ -17,7 +17,7 @@ TEST(TReaderWriterSpinLockTest, WriterPriority)
std::latch latch(readerThreads + 1);
std::atomic<size_t> finishedCount = {0};
- TReaderWriterSpinLock lock;
+ YT_DECLARE_SPIN_LOCK(TReaderWriterSpinLock, lock);
volatile std::atomic<ui32> x = {0};
@@ -51,7 +51,7 @@ TEST(TReaderWriterSpinLockTest, WriterPriority)
TEST(TReaderWriterSpinLockDeathTest, ReaderReentrance)
{
- TReaderWriterSpinLock lock;
+ YT_DECLARE_SPIN_LOCK(TReaderWriterSpinLock, lock);
EXPECT_DEBUG_DEATH({
auto guard1 = ReaderGuard(lock);
@@ -61,7 +61,7 @@ TEST(TReaderWriterSpinLockDeathTest, ReaderReentrance)
TEST(TReaderWriterSpinLockDeathTest, MixedReentrance)
{
- NDetail::TCheckedReaderWriterSpinLock lock;
+ YT_DECLARE_SPIN_LOCK(NDetail::TCheckedReaderWriterSpinLock, lock);
EXPECT_DEATH({
auto guard1 = ReaderGuard(lock);
@@ -71,7 +71,7 @@ TEST(TReaderWriterSpinLockDeathTest, MixedReentrance)
TEST(TReaderWriterSpinLockDeathTest, TryReaderReentrance)
{
- TReaderWriterSpinLock lock;
+ YT_DECLARE_SPIN_LOCK(TReaderWriterSpinLock, lock);
EXPECT_DEBUG_DEATH({
auto guard = ReaderGuard(lock);
@@ -81,7 +81,7 @@ TEST(TReaderWriterSpinLockDeathTest, TryReaderReentrance)
TEST(TReaderWriterSpinLockDeathTest, TryWriterReentrance)
{
- TReaderWriterSpinLock lock;
+ YT_DECLARE_SPIN_LOCK(TReaderWriterSpinLock, lock);
EXPECT_DEBUG_DEATH({
auto guard = WriterGuard(lock);
@@ -91,7 +91,7 @@ TEST(TReaderWriterSpinLockDeathTest, TryWriterReentrance)
TEST(TReaderWriterSpinLockDeathTest, ReleaseUnacquiredLock)
{
- TReaderWriterSpinLock lock;
+ YT_DECLARE_SPIN_LOCK(TReaderWriterSpinLock, lock);
EXPECT_DEBUG_DEATH({
lock.ReleaseReader();
diff --git a/library/cpp/yt/threading/unittests/spin_lock_count_ut.cpp b/library/cpp/yt/threading/unittests/spin_lock_count_ut.cpp
index 1534fe2c7d5..7e71ca55c2c 100644
--- a/library/cpp/yt/threading/unittests/spin_lock_count_ut.cpp
+++ b/library/cpp/yt/threading/unittests/spin_lock_count_ut.cpp
@@ -15,7 +15,7 @@ namespace {
TEST(TSpinLockCountTest, SpinLock)
{
EXPECT_EQ(GetActiveSpinLockCount(), 0);
- TSpinLock lock;
+ YT_DECLARE_SPIN_LOCK(TSpinLock, lock);
auto guard = Guard(lock);
EXPECT_EQ(GetActiveSpinLockCount(), 1);
guard.Release();
@@ -25,7 +25,7 @@ TEST(TSpinLockCountTest, SpinLock)
TEST(TSpinLockCountTest, RecursiveSpinLock)
{
EXPECT_EQ(GetActiveSpinLockCount(), 0);
- TRecursiveSpinLock lock;
+ YT_DECLARE_SPIN_LOCK(TRecursiveSpinLock, lock);
auto guard1 = Guard(lock);
EXPECT_EQ(GetActiveSpinLockCount(), 1);
auto guard2 = Guard(lock);
@@ -39,7 +39,7 @@ TEST(TSpinLockCountTest, RecursiveSpinLock)
TEST(TSpinLockCountTest, ForkAwareSpinLock)
{
EXPECT_EQ(GetActiveSpinLockCount(), 0);
- TForkAwareSpinLock lock;
+ YT_DECLARE_SPIN_LOCK(TForkAwareSpinLock, lock);
auto guard = Guard(lock);
EXPECT_EQ(GetActiveSpinLockCount(), 1);
guard.Release();
@@ -49,7 +49,7 @@ TEST(TSpinLockCountTest, ForkAwareSpinLock)
TEST(TSpinLockCountTest, RWSpinLock)
{
EXPECT_EQ(GetActiveSpinLockCount(), 0);
- TReaderWriterSpinLock lock;
+ YT_DECLARE_SPIN_LOCK(TReaderWriterSpinLock, lock);
auto readerGuard = ReaderGuard(lock);
EXPECT_EQ(GetActiveSpinLockCount(), 1);
readerGuard.Release();
diff --git a/yt/yt/core/concurrency/unittests/async_rw_lock_ut.cpp b/yt/yt/core/concurrency/unittests/async_rw_lock_ut.cpp
index a66bd8228ad..b9c71dfabda 100644
--- a/yt/yt/core/concurrency/unittests/async_rw_lock_ut.cpp
+++ b/yt/yt/core/concurrency/unittests/async_rw_lock_ut.cpp
@@ -174,7 +174,7 @@ TEST_F(TAsyncReaderWriterLockTest, CancelStressTest)
const auto seed = std::random_device()();
Cout << "Seed: " << seed << Endl;
- NThreading::TSpinLock spinlock;
+ YT_DECLARE_SPIN_LOCK(NThreading::TSpinLock, spinlock);
int readers = 0;
int writers = 0;
auto checkInvariants = [&](int deltaReaders, int deltaWriters) {
diff --git a/yt/yt/core/misc/unittests/async_slru_cache_ut.cpp b/yt/yt/core/misc/unittests/async_slru_cache_ut.cpp
index e6d04d6c976..aaea8b3d8ff 100644
--- a/yt/yt/core/misc/unittests/async_slru_cache_ut.cpp
+++ b/yt/yt/core/misc/unittests/async_slru_cache_ut.cpp
@@ -1101,7 +1101,7 @@ TEST_P(TAsyncSlruCacheStressTest, Stress)
std::uniform_int_distribution<int> capacityDistribution(static_cast<int>(cacheSize * 0.5), static_cast<int>(cacheSize * 1.5));
std::uniform_real_distribution<double> youngerSizeFractionDistribution(0.0, 1.0);
- NThreading::TSpinLock lock;
+ YT_DECLARE_SPIN_LOCK(NThreading::TSpinLock, lock);
std::vector<TCountingSlruCache::TInsertCookie> activeInsertCookies;
diff --git a/yt/yt/core/rpc/per_key_request_queue_provider.h b/yt/yt/core/rpc/per_key_request_queue_provider.h
index 59bb9365d8b..97a7a63c982 100644
--- a/yt/yt/core/rpc/per_key_request_queue_provider.h
+++ b/yt/yt/core/rpc/per_key_request_queue_provider.h
@@ -52,7 +52,7 @@ private:
TKeyFromRequestHeaderCallback KeyFromRequestHeader_;
TReconfigurationCallback ReconfigurationCallback_;
- NThreading::TReaderWriterSpinLock ThrottlingEnabledFlagsSpinLock_;
+ YT_DECLARE_SPIN_LOCK(NThreading::TReaderWriterSpinLock, ThrottlingEnabledFlagsSpinLock_);
bool WeightThrottlingEnabled_ = true;
bool BytesThrottlingEnabled_ = false;
};