diff --git a/common/configdb.cpp b/common/configdb.cpp index d1aab140f..2d733f9f6 100644 --- a/common/configdb.cpp +++ b/common/configdb.cpp @@ -24,7 +24,7 @@ void ConfigDBConnector_Native::db_connect(string db_name, bool wait_for_init, bo if (wait_for_init) { auto& client = get_redis_client(m_db_name); - auto pubsub = client.pubsub(); + auto pubsub = make_shared(&client); auto initialized = client.get(INIT_INDICATOR); if (!initialized || initialized->empty()) { diff --git a/common/dbconnector.h b/common/dbconnector.h index 88e6153fe..eb37a6e83 100644 --- a/common/dbconnector.h +++ b/common/dbconnector.h @@ -174,6 +174,9 @@ class DBConnector : public RedisContext /* Create new context to DB */ DBConnector *newConnector(unsigned int timeout) const; +#ifndef SWIG + __attribute__((deprecated)) +#endif PubSub *pubsub(); int64_t del(const std::string &key); diff --git a/tests/test_redis_ut.py b/tests/test_redis_ut.py index 344a87ef1..74c2510cb 100644 --- a/tests/test_redis_ut.py +++ b/tests/test_redis_ut.py @@ -381,6 +381,7 @@ def test_ConfigDBConnector(): def test_ConfigDBConnectorSeparator(): db = swsscommon.DBConnector("APPL_DB", 0, True) config_db = ConfigDBConnector() + # set wait for init to True to cover wait_for_init code. config_db.db_connect("APPL_DB", False, False) config_db.get_redis_client(config_db.APPL_DB).flushdb() config_db.set_entry("TEST_PORT", "Ethernet222", {"alias": "etp2x"}) @@ -696,3 +697,18 @@ def test_SonicV2Connector(): db.set("TEST_DB", "test_key", "field1", 1) value = db.get("TEST_DB", "test_key", "field1") assert value == "1" + +def test_ConfigDBWaitInit(): + config_db = ConfigDBConnector() + config_db.connect(wait_for_init=False) + client = config_db.get_redis_client(config_db.CONFIG_DB) + suc = client.set(config_db.INIT_INDICATOR, 1) + assert suc + + # set wait for init to True to cover wait_for_init code. + config_db = ConfigDBConnector() + config_db.db_connect(config_db.CONFIG_DB, True, False) + + config_db.set_entry("TEST_PORT", "Ethernet111", {"alias": "etp1x"}) + allconfig = config_db.get_config() + assert allconfig["TEST_PORT"]["Ethernet111"]["alias"] == "etp1x"