@@ -14,22 +14,34 @@ const std::string WarmStart::kRegistrationCheckpointKey = "checkpoint";
1414const std::string WarmStart::kRegistrationReconciliationKey = " reconciliation" ;
1515const std::string WarmStart::kRegistrationTimestampKey = " timestamp" ;
1616
17- const WarmStart::WarmStartStateNameMap WarmStart::warmStartStateNameMap =
17+ const WarmStart::WarmStartStateNameMap* WarmStart::warmStartStateNameMap ()
1818{
19- {INITIALIZED, " initialized" },
20- {RESTORED, " restored" },
21- {REPLAYED, " replayed" },
22- {RECONCILED, " reconciled" },
23- {WSDISABLED, " disabled" },
24- {WSUNKNOWN, " unknown" }
25- };
26-
27- const WarmStart::DataCheckStateNameMap WarmStart::dataCheckStateNameMap =
19+ static const auto * const warmStartStateNameMap =
20+ new WarmStartStateNameMap ({
21+ {INITIALIZED, " initialized" },
22+ {RESTORED, " restored" },
23+ {REPLAYED, " replayed" },
24+ {RECONCILED, " reconciled" },
25+ {WSDISABLED, " disabled" },
26+ {WSUNKNOWN, " unknown" },
27+ {FROZEN, " frozen" },
28+ {QUIESCENT, " quiescent" },
29+ {CHECKPOINTED, " checkpointed" },
30+ {FAILED, " failed" }
31+ });
32+ return warmStartStateNameMap;
33+ }
34+
35+ const WarmStart::DataCheckStateNameMap* WarmStart::dataCheckStateNameMap ()
2836{
29- {CHECK_IGNORED, " ignored" },
30- {CHECK_PASSED, " passed" },
31- {CHECK_FAILED, " failed" }
32- };
37+ static const auto * const dataCheckStateNameMap =
38+ new DataCheckStateNameMap ({
39+ {CHECK_IGNORED, " ignored" },
40+ {CHECK_PASSED, " passed" },
41+ {CHECK_FAILED, " failed" }
42+ });
43+ return dataCheckStateNameMap;
44+ }
3345
3446const WarmStart::WarmBootNotificationNameMap* WarmStart::warmBootNotificationNameMap ()
3547{
@@ -309,7 +321,7 @@ void WarmStart::getWarmStartState(const std::string &app_name, WarmStartState &s
309321 */
310322 state = WSUNKNOWN;
311323
312- for (auto it = warmStartStateNameMap. begin (); it != warmStartStateNameMap. end (); it++)
324+ for (auto it = warmStartStateNameMap ()-> begin (); it != warmStartStateNameMap ()-> end (); it++)
313325 {
314326 if (it->second == statestr)
315327 {
@@ -336,7 +348,7 @@ void WarmStart::setWarmStartState(const std::string &app_name, WarmStartState st
336348
337349 warmStart.m_stateWarmRestartTable ->hset (app_name,
338350 " state" ,
339- warmStartStateNameMap. at (state).c_str ());
351+ warmStartStateNameMap ()-> at (state).c_str ());
340352
341353 if (app_name == warmStart.m_appName )
342354 {
@@ -346,7 +358,7 @@ void WarmStart::setWarmStartState(const std::string &app_name, WarmStartState st
346358
347359 SWSS_LOG_NOTICE (" %s warm start state changed to %s" ,
348360 app_name.c_str (),
349- warmStartStateNameMap. at (state).c_str ());
361+ warmStartStateNameMap ()-> at (state).c_str ());
350362}
351363
352364// Set the WarmStart data check state for a particular application.
@@ -362,12 +374,12 @@ void WarmStart::setDataCheckState(const std::string &app_name, DataCheckStage st
362374 }
363375 warmStart.m_stateWarmRestartTable ->hset (app_name,
364376 stageField,
365- dataCheckStateNameMap. at (state).c_str ());
377+ dataCheckStateNameMap ()-> at (state).c_str ());
366378
367379 SWSS_LOG_NOTICE (" %s %s result %s" ,
368380 app_name.c_str (),
369381 stageField.c_str (),
370- dataCheckStateNameMap. at (state).c_str ());
382+ dataCheckStateNameMap ()-> at (state).c_str ());
371383}
372384
373385WarmStart::DataCheckState WarmStart::getDataCheckState (const std::string &app_name, DataCheckStage stage)
@@ -387,7 +399,7 @@ WarmStart::DataCheckState WarmStart::getDataCheckState(const std::string &app_na
387399
388400 DataCheckState state = CHECK_IGNORED;
389401
390- for (auto it = dataCheckStateNameMap. begin (); it != dataCheckStateNameMap. end (); it++)
402+ for (auto it = dataCheckStateNameMap ()-> begin (); it != dataCheckStateNameMap ()-> end (); it++)
391403 {
392404 if (it->second == stateStr)
393405 {
0 commit comments