Skip to content

Commit 4005362

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

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
@@ -103,6 +103,7 @@ void WarmStart::initialize(const std::string &app_name,
103103
std::unique_ptr<Table>(new Table(warmStart.m_cfgDb.get(), CFG_WARM_RESTART_TABLE_NAME));
104104

105105
warmStart.m_initialized = true;
106+
warmStart.m_warmbootState = WSUNKNOWN;
106107
}
107108

108109
/*
@@ -306,6 +307,13 @@ void WarmStart::getWarmStartState(const std::string &app_name, WarmStartState &s
306307
return;
307308
}
308309

310+
if (app_name == warmStart.m_appName &&
311+
warmStart.m_warmbootState != WSUNKNOWN) {
312+
/* Cache is up-to-date. Read state from cache. */
313+
state = warmStart.m_warmbootState;
314+
return;
315+
}
316+
309317
warmStart.m_stateWarmRestartTable->hget(app_name, "state", statestr);
310318

311319
/* If warm-start is enabled, state cannot be assumed as Reconciled
@@ -321,7 +329,12 @@ void WarmStart::getWarmStartState(const std::string &app_name, WarmStartState &s
321329
break;
322330
}
323331
}
324-
332+
if (app_name == warmStart.m_appName)
333+
{
334+
/* Update cache. */
335+
warmStart.m_warmbootState = state;
336+
}
337+
325338
SWSS_LOG_INFO("%s warm start state get %s(%d)",
326339
app_name.c_str(), statestr.c_str(), state);
327340

@@ -337,6 +350,12 @@ void WarmStart::setWarmStartState(const std::string &app_name, WarmStartState st
337350
"state",
338351
warmStartStateNameMap()->at(state).c_str());
339352

353+
if (app_name == warmStart.m_appName)
354+
{
355+
/* Update cache. */
356+
warmStart.m_warmbootState = state;
357+
}
358+
340359
SWSS_LOG_NOTICE("%s warm start state changed to %s",
341360
app_name.c_str(),
342361
warmStartStateNameMap()->at(state).c_str());

common/warm_restart.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ class WarmStart
109109
bool m_systemWarmRebootEnabled;
110110
std::string m_appName;
111111
std::string m_dockerName;
112+
WarmStartState m_warmbootState;
112113
};
113114

114115
}

0 commit comments

Comments
 (0)