Skip to content

Commit 477fb94

Browse files
committed
fix thread safety due to read lock for write operation
1 parent 342505e commit 477fb94

2 files changed

Lines changed: 4 additions & 10 deletions

File tree

lib/ClientImpl.cc

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -831,15 +831,9 @@ void ClientImpl::shutdown() {
831831
lookupCount_ = 0;
832832
}
833833

834-
uint64_t ClientImpl::newProducerId() {
835-
std::shared_lock lock(mutex_);
836-
return producerIdGenerator_++;
837-
}
834+
uint64_t ClientImpl::newProducerId() { return producerIdGenerator_++; }
838835

839-
uint64_t ClientImpl::newConsumerId() {
840-
std::shared_lock lock(mutex_);
841-
return consumerIdGenerator_++;
842-
}
836+
uint64_t ClientImpl::newConsumerId() { return consumerIdGenerator_++; }
843837

844838
uint64_t ClientImpl::newRequestId() { return (*requestIdGenerator_)++; }
845839

lib/ClientImpl.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,8 +207,8 @@ class ClientImpl : public std::enable_shared_from_this<ClientImpl> {
207207
std::unordered_map<std::string, LookupServicePtr> redirectedClusterLookupServicePtrs_;
208208
ConnectionPool pool_;
209209

210-
uint64_t producerIdGenerator_;
211-
uint64_t consumerIdGenerator_;
210+
std::atomic_uint64_t producerIdGenerator_;
211+
std::atomic_uint64_t consumerIdGenerator_;
212212
std::shared_ptr<std::atomic<uint64_t>> requestIdGenerator_{std::make_shared<std::atomic<uint64_t>>(0)};
213213

214214
SynchronizedHashMap<ProducerImplBase*, ProducerImplBaseWeakPtr> producers_;

0 commit comments

Comments
 (0)