Skip to content

Commit c331ed2

Browse files
mint570divyagayathri-hcl
authored andcommitted
Add support for caching warmboot state in WarmStart function.
1 parent 3172d54 commit c331ed2

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

common/warm_restart.cpp

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ void WarmStart::initialize(const std::string &app_name,
9191
std::unique_ptr<Table>(new Table(warmStart.m_cfgDb.get(), CFG_WARM_RESTART_TABLE_NAME));
9292

9393
warmStart.m_initialized = true;
94+
warmStart.m_warmbootState = WSUNKNOWN;
9495
}
9596

9697
/*
@@ -294,6 +295,13 @@ void WarmStart::getWarmStartState(const std::string &app_name, WarmStartState &s
294295
return;
295296
}
296297

298+
if (app_name == warmStart.m_appName &&
299+
warmStart.m_warmbootState != WSUNKNOWN) {
300+
/* Cache is up-to-date. Read state from cache. */
301+
state = warmStart.m_warmbootState;
302+
return;
303+
}
304+
297305
warmStart.m_stateWarmRestartTable->hget(app_name, "state", statestr);
298306

299307
/* If warm-start is enabled, state cannot be assumed as Reconciled
@@ -309,7 +317,12 @@ void WarmStart::getWarmStartState(const std::string &app_name, WarmStartState &s
309317
break;
310318
}
311319
}
312-
320+
if (app_name == warmStart.m_appName)
321+
{
322+
/* Update cache. */
323+
warmStart.m_warmbootState = state;
324+
}
325+
313326
SWSS_LOG_INFO("%s warm start state get %s(%d)",
314327
app_name.c_str(), statestr.c_str(), state);
315328

@@ -325,6 +338,12 @@ void WarmStart::setWarmStartState(const std::string &app_name, WarmStartState st
325338
"state",
326339
warmStartStateNameMap.at(state).c_str());
327340

341+
if (app_name == warmStart.m_appName)
342+
{
343+
/* Update cache. */
344+
warmStart.m_warmbootState = state;
345+
}
346+
328347
SWSS_LOG_NOTICE("%s warm start state changed to %s",
329348
app_name.c_str(),
330349
warmStartStateNameMap.at(state).c_str());

common/warm_restart.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ class WarmStart
105105
bool m_systemWarmRebootEnabled;
106106
std::string m_appName;
107107
std::string m_dockerName;
108+
WarmStartState m_warmbootState;
108109
};
109110

110111
}

0 commit comments

Comments
 (0)