sonic-buildimage/files/image_config
Junchao-Mellanox 4f326e8779
Fix race condition between networking service and interface-config service (#10573) (#10766)
Backport https://github.com/Azure/sonic-buildimage/pull/10573 to 202012.

#### Why I did it

The PR is aimed to fix a bug that mgmt port eth0 may loss IP even if user configured static IP of eth0. This is not a always reproduceable issue, the reproducing flow is like:

1.	Systemd starts networking service, which runs a dhcp based configuration and assigned an ip from dhcp.
2.	Systemd starts interface-config service who depends on networking service
3.	Interface-config service runs command  “ifdown –force eth0”, check [line](16717d2dc5/files/image_config/interfaces/interfaces-config.sh (L4)). but networking service is still running so that this [line](ac32bec0e2/ifupdown2/ifupdown/main.py (L74)) failed with error: “error: Another instance of this program is already running.”. This error is printed by ifupdown2 lib who is the main process of networking service. So, ifdown actually does not work here, the ip of eth0 is not down.
4.	Interface-config service updates /etc/networking/interface to static configuration.
5.	Interface-config service runs command “systemctl restart networking”. This command kills the previous networking related processes (log: networking.service: Main process exited, code=killed, status=15/TERM), and try to reconfigure the ip address with static configuration. But it detects that the configured IP and the existing IP are the same, and it does not really configure the ip to kernel. Hence, the ip is still getting from dhcp. (this could be a bug of ifupdown2: previous ip is from dhcp, new ip is a static ip, it treats them as same instead of re-configuring the IP)
6.	When the lease of the ip expires, the ip of eth0 is removed by kernel and the issue reproduces.

The issue is not always reproduceable because networking service usually runs fast so that it won't hit step#3.

#### How I did it

Check networking service state before running "ifdown –force eth0", wait for it done if it is activating.

#### How to verify it

Manual test.
2022-05-14 14:58:24 -07:00
..
bash Close console session due to user inactivity (#9890) 2022-02-08 19:07:29 +00:00
config-chassisdb [ChassisDB]: bring up ChassisDB service (#5283) 2020-10-14 15:15:24 -07:00
config-setup [port_config] Introduce ad-hoc mport_config.json file (#8066) 2021-07-15 12:06:47 +00:00
constants [bgpcfgd]: Fixes for BBR (#5956) 2020-11-19 00:07:58 -08:00
copp [202012][copp_cfg] Enable dhcp trap for BmcMgmtToRRouter (#10596) 2022-04-19 15:59:20 +08:00
corefile_uploader [Python] Align files in root dir, dockers/ and files/ with PEP8 standards (#6109) 2020-12-03 15:57:50 -08:00
cron.d [core_cleanup] Fix issue where core_cleanup job runs too frequently (#3659) 2019-10-23 15:55:47 -07:00
ebtables [ebtbles] Replace binary config file to text config file for ebtables (#5252) 2020-09-03 17:27:07 -07:00
environment [image]: Update login message (#706) 2017-06-14 15:18:02 -07:00
fstrim [202012][fstrim] delay fstrim timer after sonic.target (#8737) 2021-09-14 08:59:17 +00:00
haveged Start haveged before systemd-random-seed (#10328) 2022-03-24 14:28:42 -07:00
hostname [services] introduce sonic.target (#5705) 2021-03-04 21:23:05 +00:00
interfaces Fix race condition between networking service and interface-config service (#10573) (#10766) 2022-05-14 14:58:24 -07:00
kdump [kdump] Fix kdump error message when a reboot is issued (#7985) 2021-07-07 09:40:16 +00:00
kubernetes [baseimage]: Install Kubernetes packages if enabled in image (#4374) 2020-04-13 08:41:18 -07:00
logrotate [Arista] Remove arista.log from rsyslog default logrotate (#9731) 2022-04-28 23:58:41 +00:00
misc [Python] Align files in root dir, dockers/ and files/ with PEP8 standards (#6109) 2020-12-03 15:57:50 -08:00
monit [Monit] Fix the issue which shows Monit can not reset its counter. (#10288) 2022-04-21 22:00:42 +00:00
ntp [ntp] Fix ntp.conf template to allow setting of source port in CONFIG_DB (#7586) 2021-05-27 22:29:01 +00:00
pcie-check Support multiple pcie configuration file and change the pcie status table name to match with pcied changes (#7886) 2021-06-17 07:09:50 +00:00
platform [202012] Refactoring DELL platform init to reduce rc.local processing time (#10171) 2022-03-10 18:51:07 -08:00
rsyslog [services] introduce sonic.target (#5705) 2021-03-04 21:23:05 +00:00
secureboot [port_config] Introduce ad-hoc mport_config.json file (#8066) 2021-07-15 12:06:47 +00:00
snmp mvrf_avoid_snmp_yml_config: made changes to pass SNMP config from con… (#4057) 2020-01-28 17:41:21 -08:00
sudoers Close console session due to user inactivity (#9890) 2022-02-08 19:07:29 +00:00
sysctl Set sock rx Buf size to 3MB. (#5566) 2020-10-15 14:40:59 -07:00
syslog [baseimage]: /host unmount timeout issue during reboot. (#5032) 2020-07-25 01:27:58 -07:00
system-health [system-health] Add support for monitoring system health (#4835) 2020-10-12 11:12:49 +03:00
systemd [systemd] disable default systemd udev rules for interfaces (#7369) 2021-05-01 19:43:41 -07:00
topology [platform] Add Support For Environment Variable File (#5010) 2020-07-31 17:59:09 -07:00
updategraph [platform] Add Support For Environment Variable File (#5010) 2020-07-31 17:59:09 -07:00
warmboot-finalizer [warm boot finalizer] only wait for enabled components to reconcile (#6454) 2021-01-15 08:20:28 -08:00
watchdog-control [sonic-utilities] Build and install as a Python wheel package (#5409) 2020-09-20 20:16:42 -07:00
sonic_release [build]: add sonic_release 202012 2021-08-07 18:04:28 -07:00