@@ -831,11 +831,12 @@ void ContextTimeSeriesTagsCollector::extractTag(const std::vector<Group> & group
831831template <typename IDType>
832832void ContextTimeSeriesTagsCollector::storeTags (const IDType & id, const TagNamesAndValuesPtr & tags)
833833{
834- auto & groups_by_id = getIDMap<IDType>().groups_by_id ;
835-
836834 {
837835 SharedLockGuard lock{mutex};
836+
837+ const auto & groups_by_id = getConstIDMap<IDType>().groups_by_id ;
838838 auto it = groups_by_id.find (id);
839+
839840 if (it != groups_by_id.end ())
840841 {
841842 Group existing_group = it->second ;
@@ -849,7 +850,7 @@ void ContextTimeSeriesTagsCollector::storeTags(const IDType & id, const TagNames
849850 std::lock_guard lock{mutex};
850851
851852 Group group = tryAddGroupUnlocked (tags);
852-
853+ auto & groups_by_id = getIDMap<IDType>(). groups_by_id ;
853854 auto it = groups_by_id.try_emplace (id, group).first ;
854855
855856 if (it->second != group)
@@ -862,14 +863,15 @@ template <typename IDType>
862863void ContextTimeSeriesTagsCollector::storeTags (const std::vector<IDType> & ids, const std::vector<TagNamesAndValuesPtr> & tags_vector)
863864{
864865 chassert (ids.size () == tags_vector.size ());
865- auto & groups_by_id = getIDMap<IDType>().groups_by_id ;
866866
867867 std::vector<Group> found_groups;
868868 found_groups.resize (tags_vector.size (), INVALID_GROUP);
869869 size_t num_found_groups = 0 ;
870870
871871 {
872872 SharedLockGuard lock{mutex};
873+ const auto & groups_by_id = getConstIDMap<IDType>().groups_by_id ;
874+
873875 for (size_t i = 0 ; i != tags_vector.size (); ++i)
874876 {
875877 const auto & id = ids[i];
@@ -891,6 +893,8 @@ void ContextTimeSeriesTagsCollector::storeTags(const std::vector<IDType> & ids,
891893
892894 {
893895 std::lock_guard lock{mutex};
896+ auto & groups_by_id = getIDMap<IDType>().groups_by_id ;
897+
894898 for (size_t i = 0 ; i != tags_vector.size (); ++i)
895899 {
896900 if (found_groups[i] != INVALID_GROUP)
@@ -915,9 +919,8 @@ void ContextTimeSeriesTagsCollector::storeTags(const std::vector<IDType> & ids,
915919template <typename IDType>
916920Group ContextTimeSeriesTagsCollector::getGroupByID (const IDType & id) const
917921{
918- const auto & groups_by_id = getIDMap<IDType>().groups_by_id ;
919-
920922 SharedLockGuard lock{mutex};
923+ const auto & groups_by_id = getConstIDMap<IDType>().groups_by_id ;
921924
922925 auto it = groups_by_id.find (id);
923926 if (it == groups_by_id.end ())
@@ -930,12 +933,12 @@ Group ContextTimeSeriesTagsCollector::getGroupByID(const IDType & id) const
930933template <typename IDType>
931934std::vector<Group> ContextTimeSeriesTagsCollector::getGroupByID (const std::vector<IDType> & ids) const
932935{
933- const auto & groups_by_id = getIDMap<IDType>().groups_by_id ;
934-
935936 std::vector<Group> res;
936937 res.reserve (ids.size ());
937938
938939 SharedLockGuard lock{mutex};
940+ const auto & groups_by_id = getConstIDMap<IDType>().groups_by_id ;
941+
939942 for (const auto & id : ids)
940943 {
941944 auto it = groups_by_id.find (id);
@@ -951,9 +954,8 @@ std::vector<Group> ContextTimeSeriesTagsCollector::getGroupByID(const std::vecto
951954template <typename IDType>
952955TagNamesAndValuesPtr ContextTimeSeriesTagsCollector::getTagsByID (const IDType & id) const
953956{
954- const auto & groups_by_id = getIDMap<IDType>().groups_by_id ;
955-
956957 SharedLockGuard lock{mutex};
958+ const auto & groups_by_id = getConstIDMap<IDType>().groups_by_id ;
957959
958960 auto it = groups_by_id.find (id);
959961 if (it == groups_by_id.end ())
@@ -965,12 +967,12 @@ TagNamesAndValuesPtr ContextTimeSeriesTagsCollector::getTagsByID(const IDType &
965967template <typename IDType>
966968std::vector<TagNamesAndValuesPtr> ContextTimeSeriesTagsCollector::getTagsByID (const std::vector<IDType> & ids) const
967969{
968- const auto & groups_by_id = getIDMap<IDType>().groups_by_id ;
969-
970970 std::vector<TagNamesAndValuesPtr> res;
971971 res.reserve (ids.size ());
972972
973973 SharedLockGuard lock{mutex};
974+ const auto & groups_by_id = getConstIDMap<IDType>().groups_by_id ;
975+
974976 for (const auto & id : ids)
975977 {
976978 auto it = groups_by_id.find (id);
@@ -1243,9 +1245,9 @@ ContextTimeSeriesTagsCollector::IDMap<IDType> & ContextTimeSeriesTagsCollector::
12431245}
12441246
12451247template <typename IDType>
1246- const ContextTimeSeriesTagsCollector::IDMap<IDType> & ContextTimeSeriesTagsCollector::getIDMap () const
1248+ const ContextTimeSeriesTagsCollector::IDMap<IDType> & ContextTimeSeriesTagsCollector::getConstIDMap () const
12471249{
1248- return const_cast <ContextTimeSeriesTagsCollector *>(this )->getIDMap <IDType>();
1250+ return TSA_SUPPRESS_WARNING_FOR_READ ( const_cast <ContextTimeSeriesTagsCollector *>(this )->getIDMap <IDType>() );
12491251}
12501252
12511253
0 commit comments