From 92844ef377d92078942034e025f0daa5c80bf89f Mon Sep 17 00:00:00 2001
From: Rainer Kartmann <rainer.kartmann@kit.edu>
Date: Thu, 12 May 2022 10:56:52 +0200
Subject: [PATCH] Fix race condition, add todo

---
 .../armem_objects/server/instance/SegmentAdapter.cpp  | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/source/RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.cpp b/source/RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.cpp
index be53cc7ff..340d94579 100644
--- a/source/RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.cpp
+++ b/source/RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.cpp
@@ -439,10 +439,15 @@ namespace armarx::armem::server::obj::instance
                                        const Ice::Current&)
     {
         objpose::ObjectPosePredictionResultSeq results;
-        for (const auto& request : requests)
+        // TODO(@phesch): Only fetch the required data in the lock, perform the predictions
+        // locally in this function's thread.
+        segment.doLocked([this,&requests,&results]()
         {
-            results.push_back(segment.predictObjectPose(request));
-        }
+            for (const auto& request : requests)
+            {
+                results.push_back(segment.predictObjectPose(request));
+            }
+        });
         return results;
     }
 
-- 
GitLab