From 9d6d0262418a521897945e8758f06877b3f692d4 Mon Sep 17 00:00:00 2001 From: liuh-80 Date: Fri, 16 Jun 2023 08:35:22 +0000 Subject: [PATCH 1/3] 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..c7a82752bd4a 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)) From bb39906a0f349aeb28807ad38d78f938ef550786 Mon Sep 17 00:00:00 2001 From: Hua Liu <58683130+liuh-80@users.noreply.github.com> Date: Sat, 17 Jun 2023 10:39:18 +0800 Subject: [PATCH 2/3] Update flush_unused_database --- dockers/docker-database/flush_unused_database | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockers/docker-database/flush_unused_database b/dockers/docker-database/flush_unused_database index c7a82752bd4a..4d5c81b4ed80 100755 --- a/dockers/docker-database/flush_unused_database +++ b/dockers/docker-database/flush_unused_database @@ -32,7 +32,7 @@ for instname, v in instlists.items(): if instsocket is not None: # connect with Unix socket connector = swsscommon.DBConnector(dbid, instsocket, 0) - else + else: # connect with TCP socket port = swsscommon.SonicDBConfig.getDbPort(dbname); connector = swsscommon.DBConnector(dbid, insthost, port, 0) From 8e3127fc832d679417a8edb739b5bee931b2eb96 Mon Sep 17 00:00:00 2001 From: Hua Liu <58683130+liuh-80@users.noreply.github.com> Date: Wed, 21 Jun 2023 09:19:55 +0800 Subject: [PATCH 3/3] Update flush_unused_database --- dockers/docker-database/flush_unused_database | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dockers/docker-database/flush_unused_database b/dockers/docker-database/flush_unused_database index 4d5c81b4ed80..f4c1efdc1268 100755 --- a/dockers/docker-database/flush_unused_database +++ b/dockers/docker-database/flush_unused_database @@ -31,11 +31,11 @@ for instname, v in instlists.items(): # 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) + connector = swsscommon.DBConnector(dbid, instsocket, 0) else: # connect with TCP socket port = swsscommon.SonicDBConfig.getDbPort(dbname); - connector = swsscommon.DBConnector(dbid, insthost, port, 0) + connector = swsscommon.DBConnector(dbid, insthost, port, 0) connector.flushdb() except RuntimeError: