apache / apache/rocketmq-client-cpp

ERROR: GetTransport of:xxx get timed_mutex timeout 解决办法

Đang mở
#456 0 bình luận 4 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
C++
Star
393
Fork
167
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

问题:
多线程并发调用 producer->send() 很容易得到错误消息:GetTransport of:xxx get timed_mutex timeout 除了libevent的版本问题,还有一个原因是gcc版本的bug

原因:
if (!lock.try_lock_for(std::chrono::seconds(m_tcpTransportTryLockTimeout))) {
LOG_ERROR("GetTransport of:%s get timed_mutex timeout", addr.c_str());
std::shared_ptr pTcp;
return pTcp;
}

gcc4.8.5的情况下,try_lock_for会立即返回,并不会等待期待的m_tcpTransportTryLockTimeout时长。 升级到4.9.0之后即可解决。

**std::timed_mutex::try_lock_for bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54562**

@ShannonDing 建议在首页说明使用gcc版本应该高于等于4.9.0

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.