浏览代码

HPCC-26778 Change collatorsLock in udp layer to a critsec

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 3 年之前
父节点
当前提交
8e6916fc4a
共有 2 个文件被更改,包括 8 次插入8 次删除
  1. 4 4
      roxie/udplib/udpaeron.cpp
  2. 4 4
      roxie/udplib/udptrr.cpp

+ 4 - 4
roxie/udplib/udpaeron.cpp

@@ -140,7 +140,7 @@ class CRoxieAeronReceiveManager : public CInterfaceOf<IReceiveManager>
 private:
     typedef std::map<ruid_t, CMessageCollator*> uid_map;
     uid_map         collators;
-    SpinLock collatorsLock; // protects access to collators map
+    CriticalSection collatorsLock; // protects access to collators map
 
     std::shared_ptr<aeron::Aeron> aeron;
     std::shared_ptr<aeron::Subscription> loSub;
@@ -221,7 +221,7 @@ public:
         Linked <CMessageCollator> msgColl;
         bool isDefault = false; // Don't trace inside the spinBlock!
         {
-            SpinBlock b(collatorsLock);
+            CriticalBlock b(collatorsLock);
             try
             {
                 msgColl.set(collators[pktHdr->ruid]);
@@ -261,7 +261,7 @@ public:
         if (udpTraceLevel >= 2)
             DBGLOG("AeronReceiver: createMessageCollator %p %u", msgColl, ruid);
         {
-            SpinBlock b(collatorsLock);
+            CriticalBlock b(collatorsLock);
             collators[ruid] = msgColl;
         }
         msgColl->Link();
@@ -274,7 +274,7 @@ public:
         if (udpTraceLevel >= 2)
             DBGLOG("AeronReceiver: detach %p %u", msgColl, ruid);
         {
-            SpinBlock b(collatorsLock);
+            CriticalBlock b(collatorsLock);
             collators.erase(ruid);
         }
         msgColl->Release();

+ 4 - 4
roxie/udplib/udptrr.cpp

@@ -750,7 +750,7 @@ class CReceiveManager : implements IReceiveManager, public CInterface
 
     typedef std::map<ruid_t, CMessageCollator*> uid_map;
     uid_map         collators;
-    SpinLock collatorsLock; // protects access to collators map
+    CriticalSection collatorsLock; // protects access to collators map
 
   public:
     IMPLEMENT_IINTERFACE;
@@ -789,7 +789,7 @@ class CReceiveManager : implements IReceiveManager, public CInterface
         ruid_t ruid = msgColl->queryRUID();
         if (udpTraceLevel >= 2) DBGLOG("UdpReceiver: detach %p %u", msgColl, ruid);
         {
-            SpinBlock b(collatorsLock);
+            CriticalBlock b(collatorsLock);
             collators.erase(ruid);
         }
         msgColl->Release();
@@ -818,9 +818,9 @@ class CReceiveManager : implements IReceiveManager, public CInterface
         Linked <CMessageCollator> msgColl;
         bool isDefault = false;
         {
-            SpinBlock b(collatorsLock);
             try
             {
+                CriticalBlock b(collatorsLock);
                 msgColl.set(collators[pktHdr->ruid]);
                 if (!msgColl)
                 {
@@ -858,7 +858,7 @@ class CReceiveManager : implements IReceiveManager, public CInterface
         if (udpTraceLevel > 2)
             DBGLOG("UdpReceiver: createMessageCollator %p %u", msgColl, ruid);
         {
-            SpinBlock b(collatorsLock);
+            CriticalBlock b(collatorsLock);
             collators[ruid] = msgColl;
         }
         msgColl->Link();