[MultiDB] use sonic-db-cli PING and fix wrong multiDB API in NAT (#4541)
This commit is contained in:
parent
3be7c5786b
commit
3faa4e936e
@ -34,7 +34,6 @@ RUN apt-get clean -y && \
|
||||
|
||||
COPY ["supervisord.conf.j2", "/usr/share/sonic/templates/"]
|
||||
COPY ["docker-database-init.sh", "/usr/local/bin/"]
|
||||
COPY ["ping_pong_db_insts", "/usr/local/bin/"]
|
||||
COPY ["database_config.json", "/etc/default/sonic-db/"]
|
||||
COPY ["files/supervisor-proc-exit-listener", "/usr/bin"]
|
||||
COPY ["critical_processes", "/etc/supervisor"]
|
||||
|
@ -1,40 +0,0 @@
|
||||
#!/usr/bin/python
|
||||
import json
|
||||
import os
|
||||
import subprocess
|
||||
import time
|
||||
import syslog
|
||||
|
||||
def ping_redis(cmd):
|
||||
output = ''
|
||||
while True:
|
||||
try:
|
||||
output = subprocess.check_output(cmd, shell=True)
|
||||
except subprocess.CalledProcessError as e:
|
||||
syslog.syslog(syslog.LOG_ERR, 'ping redis failed, cmd : {}'.format(cmd))
|
||||
|
||||
if 'PONG' in output:
|
||||
break
|
||||
syslog.syslog(syslog.LOG_ERR, 'ping response : {}'.format(output))
|
||||
time.sleep(1)
|
||||
|
||||
database_config_file = "/var/run/redis/sonic-db/database_config.json"
|
||||
|
||||
data = {}
|
||||
while True:
|
||||
if os.path.isfile(database_config_file):
|
||||
with open(database_config_file, "r") as read_file:
|
||||
data = json.load(read_file)
|
||||
break
|
||||
time.sleep(1)
|
||||
syslog.syslog(syslog.LOG_ERR, 'config file {} does not exist right now'.format(database_config_file))
|
||||
|
||||
while True:
|
||||
if 'INSTANCES' in data:
|
||||
for inst in data["INSTANCES"]:
|
||||
port = data["INSTANCES"][inst]["port"]
|
||||
cmd = "redis-cli -p " + str(port) + " ping"
|
||||
ping_redis(cmd)
|
||||
break
|
||||
time.sleep(1)
|
||||
syslog.syslog(syslog.LOG_ERR, 'config file {} does not have INSTANCES'.format(database_config_file))
|
@ -24,7 +24,6 @@ NAT_WARM_BOOT_FILE = 'nat_entries.dump'
|
||||
IP_PROTO_TCP = '6'
|
||||
|
||||
MATCH_CONNTRACK_ENTRY = '^(\w+)\s+(\d+).*src=([\d.]+)\s+dst=([\d.]+)\s+sport=(\d+)\s+dport=(\d+).*src=([\d.]+)\s+dst=([\d.]+)\s+sport=(\d+)\s+dport=(\d+)'
|
||||
REDIS_SOCK = "/var/run/redis/redis.sock"
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
logger.setLevel(logging.INFO)
|
||||
@ -44,7 +43,7 @@ def add_nat_conntrack_entry_in_kernel(ipproto, srcip, dstip, srcport, dstport, n
|
||||
|
||||
# Set the statedb "NAT_RESTORE_TABLE|Flags", so natsyncd can start reconciliation
|
||||
def set_statedb_nat_restore_done():
|
||||
statedb = swsscommon.DBConnector(swsscommon.STATE_DB, REDIS_SOCK, 0)
|
||||
statedb = swsscommon.DBConnector("STATE_DB", 0)
|
||||
tbl = swsscommon.Table(statedb, "NAT_RESTORE_TABLE")
|
||||
fvs = swsscommon.FieldValuePairs([("restored", "true")])
|
||||
tbl.set("Flags", fvs)
|
||||
|
@ -78,7 +78,11 @@ function postStartAction()
|
||||
link_namespace $DEV
|
||||
fi
|
||||
# Wait until redis starts
|
||||
/usr/bin/docker exec database$DEV ping_pong_db_insts
|
||||
# TODO: should use $SONIC_DB_CLI if Judy's PR 4477 is in first, otherwise PR 4477 should change this part
|
||||
until [[ $(/usr/bin/sonic-netns-exec "$NET_NS" sonic-db-cli PING | grep -c PONG) -gt 0 ]]; do
|
||||
sleep 1;
|
||||
done
|
||||
|
||||
if [[ ("$BOOT_TYPE" == "warm" || "$BOOT_TYPE" == "fastfast") && -f $WARM_DIR/dump.rdb ]]; then
|
||||
rm -f $WARM_DIR/dump.rdb
|
||||
else
|
||||
|
@ -29,7 +29,9 @@ function wait_for_database_service()
|
||||
debug "Wait for database to become ready..."
|
||||
|
||||
# Wait for redis server start before database clean
|
||||
/usr/bin/docker exec database ping_pong_db_insts
|
||||
until [[ $(sonic-db-cli PING | grep -c PONG) -gt 0 ]]; do
|
||||
sleep 1;
|
||||
done
|
||||
|
||||
# Wait for configDB initialization
|
||||
until [[ $(sonic-db-cli CONFIG_DB GET "CONFIG_DB_INITIALIZED") ]];
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Wait until redis starts
|
||||
until [[ $(redis-cli ping | grep -c PONG) -gt 0 ]]; do
|
||||
until [[ $(sonic-db-cli PING | grep -c PONG) -gt 0 ]]; do
|
||||
sleep 1;
|
||||
done
|
||||
|
||||
|
@ -51,7 +51,10 @@ function validate_restore_count()
|
||||
function wait_for_database_service()
|
||||
{
|
||||
# Wait for redis server start before database clean
|
||||
/usr/bin/docker exec database$DEV ping_pong_db_insts
|
||||
# TODO: should use $SONIC_DB_CLI if Judy's PR 4477 is in first, otherwise PR 4477 should change this part
|
||||
until [[ $(/usr/bin/sonic-netns-exec "$NET_NS" sonic-db-cli PING | grep -c PONG) -gt 0 ]]; do
|
||||
sleep 1;
|
||||
done
|
||||
|
||||
# Wait for configDB initialization
|
||||
until [[ $(sonic-netns-exec "$NET_NS" sonic-db-cli CONFIG_DB GET "CONFIG_DB_INITIALIZED") ]];
|
||||
|
@ -39,7 +39,10 @@ function check_warm_boot()
|
||||
function wait_for_database_service()
|
||||
{
|
||||
# Wait for redis server start before database clean
|
||||
/usr/bin/docker exec database$DEV ping_pong_db_insts
|
||||
# TODO: should use $SONIC_DB_CLI if Judy's PR 4477 is in first, otherwise PR 4477 should change this part
|
||||
until [[ $(/usr/bin/sonic-netns-exec "$NET_NS" sonic-db-cli PING | grep -c PONG) -gt 0 ]]; do
|
||||
sleep 1;
|
||||
done
|
||||
|
||||
# Wait for configDB initialization
|
||||
until [[ $(sonic-netns-exec "$NET_NS" sonic-db-cli CONFIG_DB GET "CONFIG_DB_INITIALIZED") ]];
|
||||
|
Loading…
Reference in New Issue
Block a user