diff --git a/common/restart_waiter.cpp b/common/restart_waiter.cpp index aca1c305b..2fea3b5e0 100644 --- a/common/restart_waiter.cpp +++ b/common/restart_waiter.cpp @@ -11,7 +11,7 @@ static const std::string STATE_DB_NAME = "STATE_DB"; static const std::string STATE_DB_SEPARATOR = "|"; static const std::string RESTART_KEY = "system"; static const std::string RESTART_ENABLE_FIELD = "enable"; -static const std::string FAST_REBOOT_TABLE_NAME = "FAST_REBOOT"; +static const std::string FAST_REBOOT_TABLE_NAME = "FAST_RESTART_ENABLE_TABLE"; // waitAdvancedBootDone bool RestartWaiter::waitAdvancedBootDone( @@ -71,7 +71,14 @@ bool RestartWaiter::doWait(DBConnector &stateDb, bool RestartWaiter::isAdvancedBootInProgress(DBConnector &stateDb) { - auto ret = stateDb.hget(STATE_WARM_RESTART_ENABLE_TABLE_NAME + STATE_DB_SEPARATOR + RESTART_KEY, RESTART_ENABLE_FIELD); + return isAdvancedBootInProgressHelper(stateDb); +} + +bool RestartWaiter::isAdvancedBootInProgressHelper(DBConnector &stateDb, + bool checkFastBoot) +{ + std::string table_name = checkFastBoot ? FAST_REBOOT_TABLE_NAME : STATE_WARM_RESTART_ENABLE_TABLE_NAME; + auto ret = stateDb.hget(table_name + STATE_DB_SEPARATOR + RESTART_KEY, RESTART_ENABLE_FIELD); if (ret) { std::string value = *ret.get(); boost::to_lower(value); @@ -82,8 +89,7 @@ bool RestartWaiter::isAdvancedBootInProgress(DBConnector &stateDb) bool RestartWaiter::isFastBootInProgress(DBConnector &stateDb) { - auto ret = stateDb.get(FAST_REBOOT_TABLE_NAME + STATE_DB_SEPARATOR + RESTART_KEY); - return ret.get() != nullptr; + return isAdvancedBootInProgressHelper(stateDb, true); } bool RestartWaiter::isWarmBootInProgress(swss::DBConnector &stateDb) diff --git a/common/restart_waiter.h b/common/restart_waiter.h index ea9eec7b6..79268bfbc 100644 --- a/common/restart_waiter.h +++ b/common/restart_waiter.h @@ -20,7 +20,9 @@ class RestartWaiter static bool waitFastBootDone(unsigned int maxWaitSec = 180, unsigned int dbTimeout = 0, bool isTcpConn = false); - + + static bool isAdvancedBootInProgressHelper(swss::DBConnector &stateDb, + bool checkFastBoot = false); static bool isAdvancedBootInProgress(swss::DBConnector &stateDb); static bool isFastBootInProgress(swss::DBConnector &stateDb); static bool isWarmBootInProgress(swss::DBConnector &stateDb); diff --git a/tests/restart_waiter_ut.cpp b/tests/restart_waiter_ut.cpp index 47e619e48..111ecb5b7 100644 --- a/tests/restart_waiter_ut.cpp +++ b/tests/restart_waiter_ut.cpp @@ -12,7 +12,7 @@ using namespace swss; using namespace std; -static const string FAST_REBOOT_KEY = "FAST_REBOOT|system"; +static const string FAST_REBOOT_KEY = "FAST_RESTART_ENABLE_TABLE|system"; static void set_reboot_status(string status, int delay = 0) { @@ -31,12 +31,12 @@ class FastBootHelper public: FastBootHelper(): db("STATE_DB", 0) { - db.set(FAST_REBOOT_KEY, "1"); + db.hset(FAST_REBOOT_KEY, "enable", "true"); } ~FastBootHelper() { - db.del({FAST_REBOOT_KEY}); + db.hset(FAST_REBOOT_KEY, "enable", "false"); } private: DBConnector db;