From c91707ff3139a8b5d8d3c8eaa9d41406d52287ea Mon Sep 17 00:00:00 2001 From: Hua Liu <58683130+liuh-80@users.noreply.github.com> Date: Thu, 29 Jun 2023 15:08:54 -0700 Subject: [PATCH] Migrate flush_unused_database from py-redis to sonic-swss-common (#15511) Migrate flush_unused_database from py-redis to sonic-swss-common #### Why I did it flush_unused_database using py-redis, but sonic-swss-common already support flushdb, so we need migrate to sonic-swss-common ##### Work item tracking - Microsoft ADO **(number only)**: 24292565 #### How I did it Migrate flush_unused_database from py-redis to sonic-swss-common #### How to verify it Pass all UT and E2E test #### Description for the changelog Migrate flush_unused_database from py-redis to sonic-swss-common --- dockers/docker-database/flush_unused_database | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/dockers/docker-database/flush_unused_database b/dockers/docker-database/flush_unused_database index 11eb7215ebd0..f4c1efdc1268 100755 --- a/dockers/docker-database/flush_unused_database +++ b/dockers/docker-database/flush_unused_database @@ -1,6 +1,5 @@ #!/usr/bin/python3 from swsscommon import swsscommon -import redis import subprocess import time import syslog @@ -26,7 +25,18 @@ for instname, v in instlists.items(): continue try: - r = redis.Redis(host=insthost, unix_socket_path=instsocket, db=dbid) - r.flushdb() - except (redis.exceptions.ConnectionError): + # Migrate code from py-redis to swsscommon, original code: + # r = redis.Redis(host=insthost, unix_socket_path=instsocket, db=dbid) + # py-redis will use TCP connection when unix_socket_path is None + # https://github.com/redis/redis-py/blob/d95d8a24ed2af3eae80b7b0f14cbccc9dbe86e96/redis/client.py#L1006 + if instsocket is not None: + # connect with Unix socket + connector = swsscommon.DBConnector(dbid, instsocket, 0) + else: + # connect with TCP socket + port = swsscommon.SonicDBConfig.getDbPort(dbname); + connector = swsscommon.DBConnector(dbid, insthost, port, 0) + + connector.flushdb() + except RuntimeError: syslog.syslog(syslog.LOG_INFO,"flushdb:Redis Unix Socket connection error for path {} and dbaname {}".format(instsocket, dbname))