Open super-jiying opened 2 months ago
TeamSync::addLag method only updates "admin_status" and "mtu" field to m_stateLagTable.
bool lag_update = true; /* Return when the team instance has already been tracked */ if (m_teamSelectables.find(lagName) != m_teamSelectables.end()) { auto tsync = m_teamSelectables[lagName]; if (tsync->admin_state == admin_state && tsync->mtu == mtu) return; tsync->admin_state = admin_state; tsync->mtu = mtu; lag_update = false; } FieldValueTuple s("state", "ok"); fvVector.push_back(s); if (m_warmstart) { m_stateLagTablePreserved[lagName] = fvVector; } else { m_stateLagTable.set(lagName, fvVector); }
This will result in the "oper_status" value of LAG_TABLE in state_db remaining unchanged.
In appl_db,"oper_status" is "up".
127.0.0.1:6379> hgetall LAG_TABLE:PortChannel0101 1) "mtu" 2) "9216" 3) "admin_status" 4) "up" 5) "oper_status" 6) "up"
In state_db,"oper_status" is "down".
127.0.0.1:6379[6]> hgetall LAG_TABLE|PortChannel0101 1) "admin_status" 2) "up" 3) "oper_status" 4) "down" 5) "mtu" 6) "9216" 7) "state" 8) "ok" 9) "team_device.ifinfo.ifindex" 10) "14" 11) "team_device.ifinfo.dev_addr" 12) "74:fe:48:7b:29:3e" 13) "runner.fast_rate" 14) "false" 15) "runner.fallback" 16) "false" 17) "runner.active" 18) "true" 19) "setup.pid" 20) "33" 21) "setup.kernel_team_mode_name" 22) "loadbalance"
The "oper_status" of LAG_TABLE in state_db keeps consistent with with it in appl_db.
Description:
TeamSync::addLag method only updates "admin_status" and "mtu" field to m_stateLagTable.
This will result in the "oper_status" value of LAG_TABLE in state_db remaining unchanged.
Steps to reproduce the issue:
Describe the results you received:
In appl_db,"oper_status" is "up".
In state_db,"oper_status" is "down".
Describe the results you expected:
The "oper_status" of LAG_TABLE in state_db keeps consistent with with it in appl_db.