Skip to content

Inform user that reload is required after suppress-fib-pending change#4361

Open
mike-dubrovsky wants to merge 1 commit into
sonic-net:masterfrom
mike-dubrovsky:fib-suppression
Open

Inform user that reload is required after suppress-fib-pending change#4361
mike-dubrovsky wants to merge 1 commit into
sonic-net:masterfrom
mike-dubrovsky:fib-suppression

Conversation

@mike-dubrovsky

@mike-dubrovsky mike-dubrovsky commented Mar 16, 2026

Copy link
Copy Markdown
Contributor

Summary

suppress-fib-pending config changes require a reload to take effect.

Changes:

  • config/main.py: inform user that reload is required after
    changing suppress-fib-pending

What I did

How I did it

How to verify it

Previous command output (if the output of a command-line utility has changed)

New command output (if the output of a command-line utility has changed)

This change needs to go together with
sonic-net/sonic-swss#4333
sonic-net/sonic-buildimage#26151
sonic-net/sonic-mgmt#22916
sonic-net/SONiC#2335

@mssonicbld

Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@mssonicbld

Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@mike-dubrovsky mike-dubrovsky changed the title Read FIB suppression oper state from STATE_DB; block warm reboot on mismatch Inform user that reload is required after suppress-fib-pending change May 14, 2026
@mssonicbld

Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

Comment thread config/main.py Outdated
config_db = db.cfgdb_clients[ns]
config_db.mod_entry('DEVICE_METADATA', 'localhost', {"suppress-fib-pending": state})

click.echo("""Wrote %s suppress-fib-pending into CONFIG_DB, reload required to apply the configuration:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wording: "reload required to apply the configuration" can be misread as a device reboot. Suggest saying config reload explicitly, which also makes the "doesn't take effect until reload" contract clear at the point of use. Proposed:

suppress-fib-pending set to '<state>' in CONFIG_DB. This does NOT take effect until a config reload.
Persist and apply with:
    config save -y
    config reload -y

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Comment thread config/main.py Outdated
config_db = db.cfgdb_clients[ns]
config_db.mod_entry('DEVICE_METADATA', 'localhost', {"suppress-fib-pending": state})

click.echo("""Wrote %s suppress-fib-pending into CONFIG_DB, reload required to apply the configuration:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This notice prints on every invocation, including when state already matches the current CONFIG_DB value — which can misleadingly prompt the operator to reload when nothing changed. Consider reading the current suppress-fib-pending value first and, when it already equals the requested state, skip the write and instead print e.g. suppress-fib-pending is already <state>, no change (reserving the reload notice for an actual change).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@mssonicbld

Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

StormLiangMS pushed a commit to sonic-net/sonic-mgmt that referenced this pull request Jul 16, 2026
#26175) (#26176)

### Description of PR

Summary:
Fixes #26175

Temporarily skip the whole `bgp/test_bgp_suppress_fib.py` module for the
suppress-fib-pending **dynamic-toggle race**.

The module toggles `suppress-fib-pending` dynamically at runtime (via
the shared `config_bgp_suppress_fib()` helper, no `config reload`). That
triggers a race between **orchagent, fpmsyncd and FRR** where routes are
intermittently **not marked offloaded in FRR** / **not propagated to the
upstream VM** within the wait window, failing essentially every case in
the module.

The root-cause fix makes `suppress-fib-pending` **static** (takes effect
only after a `config reload`), removing the race —
[sonic-swss#4333](sonic-net/sonic-swss#4333),
[sonic-buildimage#26151](sonic-net/sonic-buildimage#26151),
[sonic-utilities#4361](sonic-net/sonic-utilities#4361),
[sonic-mgmt#22916](#22916),
[SONiC#2335](sonic-net/SONiC#2335).

> **The product fix is master-only and is not backported.** Because of
that, the skip uses **two different lift semantics**, expressed as
separate conditions:
>
> - **`master`** — gated on the tracking issue: `release in ['master']
and https://github.com/sonic-net/sonic-mgmt/issues/26175`. When the fix
lands on master and #26175 is closed, the skip **auto-lifts** on master
and coverage returns — no manual edit needed.
> - **`202505` / `202511` / `202605`** — a plain `release in [...]`
condition with **no issue gate**. These branches never receive the
product fix, so the module is skipped for the life of the branch (same
nature as the existing pre-202411 "not supported" condition).
>
> **Per-branch effect still requires cherry-picking this skip.** Each
release branch's nightly runs its own `sonic-mgmt` checkout, so this
YAML change must be cherry-picked to 202505/202511/202605 for the skip
to take effect there. The identical diff matches on each branch via its
own `release` token.
>
> If a release branch ever does receive the product fix, drop that
branch's token from the `release in [...]` list — a deliberate
per-branch edit. #26175 tracks the lifecycle.

### Type of change

- [ ] Bug fix
- [x] Testbed and Framework(new/improvement)
- [ ] New Test case
    - [ ] Skipped for non-supported platforms
- [ ] Test case improvement

### Back port request

- [ ] 202205
- [ ] 202305
- [ ] 202311
- [ ] 202405
- [ ] 202411
- [x] 202505
- [x] 202511

(also 202605 — not listed in the template checkboxes; cherry-pick
required there as well.)

### Approach
#### What is the motivation for this PR?

The `test_bgp_suppress_fib` module is a persistent nightly-noise source
across master and the active release branches. The dynamic runtime
toggle of `suppress-fib-pending` races orchagent/fpmsyncd/FRR, so routes
are intermittently left un-offloaded / un-propagated and nearly every
case in the module fails intermittently. Skipping the module de-noises
the nightly signal while the product-layer fix rolls out on master.

#### How did you do it?

Extended the existing `bgp/test_bgp_suppress_fib.py` skip block with
`conditions_logical_operator: or` and split the affected releases by
lift semantics:

```yaml
conditions:
  - "release in ['201811', '201911', '202012', '202205', '202211', '202305', '202311', '202405']"
  - "release in ['202505', '202511', '202605']"
  - "release in ['master'] and #26175"
```

The `conditional_mark` plugin replaces the issue URL with `True`/`False`
based on the issue's open/closed state and `eval()`s the condition, so
the master line auto-lifts when #26175 closes while the release-branch
line stays permanent. (The same file already uses the `<expr> and
<issue-url>` form for the `asic_type in ['vs'] and #14449` conditions.)

#### How did you verify/test it?

- `tests_mark_conditions.yaml` parses cleanly and passes the
`check_conditional_mark_sort.py` pre-commit hook.
- Simulated the `conditional_mark` evaluation for each `release` value:
  - issue **open**: master + 202505/202511/202605 all skip;
- issue **closed**: master unskips, 202505/202511/202605 remain skipped
— matching the intended lift semantics.

#### Any platform specific information?

None — the skip is keyed on `release` only (all ASICs/topologies),
matching the all-vendor nature of the race.

#### Supported testbed topology if it's a new test case?

N/A — not a new test case; module skip only.

### Documentation

N/A

Signed-off-by: Deepak Singhal <deepsinghal@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
selldinesh pushed a commit to selldinesh/sonic-mgmt that referenced this pull request Jul 16, 2026
sonic-net#26175) (sonic-net#26176)

### Description of PR

Summary:
Fixes sonic-net#26175

Temporarily skip the whole `bgp/test_bgp_suppress_fib.py` module for the
suppress-fib-pending **dynamic-toggle race**.

The module toggles `suppress-fib-pending` dynamically at runtime (via
the shared `config_bgp_suppress_fib()` helper, no `config reload`). That
triggers a race between **orchagent, fpmsyncd and FRR** where routes are
intermittently **not marked offloaded in FRR** / **not propagated to the
upstream VM** within the wait window, failing essentially every case in
the module.

The root-cause fix makes `suppress-fib-pending` **static** (takes effect
only after a `config reload`), removing the race —
[sonic-swss#4333](sonic-net/sonic-swss#4333),
[sonic-buildimage#26151](sonic-net/sonic-buildimage#26151),
[sonic-utilities#4361](sonic-net/sonic-utilities#4361),
[sonic-mgmt#22916](sonic-net#22916),
[SONiC#2335](sonic-net/SONiC#2335).

> **The product fix is master-only and is not backported.** Because of
that, the skip uses **two different lift semantics**, expressed as
separate conditions:
>
> - **`master`** — gated on the tracking issue: `release in ['master']
and https://github.com/sonic-net/sonic-mgmt/issues/26175`. When the fix
lands on master and sonic-net#26175 is closed, the skip **auto-lifts** on master
and coverage returns — no manual edit needed.
> - **`202505` / `202511` / `202605`** — a plain `release in [...]`
condition with **no issue gate**. These branches never receive the
product fix, so the module is skipped for the life of the branch (same
nature as the existing pre-202411 "not supported" condition).
>
> **Per-branch effect still requires cherry-picking this skip.** Each
release branch's nightly runs its own `sonic-mgmt` checkout, so this
YAML change must be cherry-picked to 202505/202511/202605 for the skip
to take effect there. The identical diff matches on each branch via its
own `release` token.
>
> If a release branch ever does receive the product fix, drop that
branch's token from the `release in [...]` list — a deliberate
per-branch edit. sonic-net#26175 tracks the lifecycle.

### Type of change

- [ ] Bug fix
- [x] Testbed and Framework(new/improvement)
- [ ] New Test case
    - [ ] Skipped for non-supported platforms
- [ ] Test case improvement

### Back port request

- [ ] 202205
- [ ] 202305
- [ ] 202311
- [ ] 202405
- [ ] 202411
- [x] 202505
- [x] 202511

(also 202605 — not listed in the template checkboxes; cherry-pick
required there as well.)

### Approach
#### What is the motivation for this PR?

The `test_bgp_suppress_fib` module is a persistent nightly-noise source
across master and the active release branches. The dynamic runtime
toggle of `suppress-fib-pending` races orchagent/fpmsyncd/FRR, so routes
are intermittently left un-offloaded / un-propagated and nearly every
case in the module fails intermittently. Skipping the module de-noises
the nightly signal while the product-layer fix rolls out on master.

#### How did you do it?

Extended the existing `bgp/test_bgp_suppress_fib.py` skip block with
`conditions_logical_operator: or` and split the affected releases by
lift semantics:

```yaml
conditions:
  - "release in ['201811', '201911', '202012', '202205', '202211', '202305', '202311', '202405']"
  - "release in ['202505', '202511', '202605']"
  - "release in ['master'] and sonic-net#26175"
```

The `conditional_mark` plugin replaces the issue URL with `True`/`False`
based on the issue's open/closed state and `eval()`s the condition, so
the master line auto-lifts when sonic-net#26175 closes while the release-branch
line stays permanent. (The same file already uses the `<expr> and
<issue-url>` form for the `asic_type in ['vs'] and sonic-net#14449` conditions.)

#### How did you verify/test it?

- `tests_mark_conditions.yaml` parses cleanly and passes the
`check_conditional_mark_sort.py` pre-commit hook.
- Simulated the `conditional_mark` evaluation for each `release` value:
  - issue **open**: master + 202505/202511/202605 all skip;
- issue **closed**: master unskips, 202505/202511/202605 remain skipped
— matching the intended lift semantics.

#### Any platform specific information?

None — the skip is keyed on `release` only (all ASICs/topologies),
matching the all-vendor nature of the race.

#### Supported testbed topology if it's a new test case?

N/A — not a new test case; module skip only.

### Documentation

N/A

Signed-off-by: Deepak Singhal <deepsinghal@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: selldinesh <dinesh.sellappan@keysight.com>
selldinesh pushed a commit to selldinesh/sonic-mgmt that referenced this pull request Jul 16, 2026
sonic-net#26175) (sonic-net#26176)

### Description of PR

Summary:
Fixes sonic-net#26175

Temporarily skip the whole `bgp/test_bgp_suppress_fib.py` module for the
suppress-fib-pending **dynamic-toggle race**.

The module toggles `suppress-fib-pending` dynamically at runtime (via
the shared `config_bgp_suppress_fib()` helper, no `config reload`). That
triggers a race between **orchagent, fpmsyncd and FRR** where routes are
intermittently **not marked offloaded in FRR** / **not propagated to the
upstream VM** within the wait window, failing essentially every case in
the module.

The root-cause fix makes `suppress-fib-pending` **static** (takes effect
only after a `config reload`), removing the race —
[sonic-swss#4333](sonic-net/sonic-swss#4333),
[sonic-buildimage#26151](sonic-net/sonic-buildimage#26151),
[sonic-utilities#4361](sonic-net/sonic-utilities#4361),
[sonic-mgmt#22916](sonic-net#22916),
[SONiC#2335](sonic-net/SONiC#2335).

> **The product fix is master-only and is not backported.** Because of
that, the skip uses **two different lift semantics**, expressed as
separate conditions:
>
> - **`master`** — gated on the tracking issue: `release in ['master']
and https://github.com/sonic-net/sonic-mgmt/issues/26175`. When the fix
lands on master and sonic-net#26175 is closed, the skip **auto-lifts** on master
and coverage returns — no manual edit needed.
> - **`202505` / `202511` / `202605`** — a plain `release in [...]`
condition with **no issue gate**. These branches never receive the
product fix, so the module is skipped for the life of the branch (same
nature as the existing pre-202411 "not supported" condition).
>
> **Per-branch effect still requires cherry-picking this skip.** Each
release branch's nightly runs its own `sonic-mgmt` checkout, so this
YAML change must be cherry-picked to 202505/202511/202605 for the skip
to take effect there. The identical diff matches on each branch via its
own `release` token.
>
> If a release branch ever does receive the product fix, drop that
branch's token from the `release in [...]` list — a deliberate
per-branch edit. sonic-net#26175 tracks the lifecycle.

### Type of change

- [ ] Bug fix
- [x] Testbed and Framework(new/improvement)
- [ ] New Test case
    - [ ] Skipped for non-supported platforms
- [ ] Test case improvement

### Back port request

- [ ] 202205
- [ ] 202305
- [ ] 202311
- [ ] 202405
- [ ] 202411
- [x] 202505
- [x] 202511

(also 202605 — not listed in the template checkboxes; cherry-pick
required there as well.)

### Approach
#### What is the motivation for this PR?

The `test_bgp_suppress_fib` module is a persistent nightly-noise source
across master and the active release branches. The dynamic runtime
toggle of `suppress-fib-pending` races orchagent/fpmsyncd/FRR, so routes
are intermittently left un-offloaded / un-propagated and nearly every
case in the module fails intermittently. Skipping the module de-noises
the nightly signal while the product-layer fix rolls out on master.

#### How did you do it?

Extended the existing `bgp/test_bgp_suppress_fib.py` skip block with
`conditions_logical_operator: or` and split the affected releases by
lift semantics:

```yaml
conditions:
  - "release in ['201811', '201911', '202012', '202205', '202211', '202305', '202311', '202405']"
  - "release in ['202505', '202511', '202605']"
  - "release in ['master'] and sonic-net#26175"
```

The `conditional_mark` plugin replaces the issue URL with `True`/`False`
based on the issue's open/closed state and `eval()`s the condition, so
the master line auto-lifts when sonic-net#26175 closes while the release-branch
line stays permanent. (The same file already uses the `<expr> and
<issue-url>` form for the `asic_type in ['vs'] and sonic-net#14449` conditions.)

#### How did you verify/test it?

- `tests_mark_conditions.yaml` parses cleanly and passes the
`check_conditional_mark_sort.py` pre-commit hook.
- Simulated the `conditional_mark` evaluation for each `release` value:
  - issue **open**: master + 202505/202511/202605 all skip;
- issue **closed**: master unskips, 202505/202511/202605 remain skipped
— matching the intended lift semantics.

#### Any platform specific information?

None — the skip is keyed on `release` only (all ASICs/topologies),
matching the all-vendor nature of the race.

#### Supported testbed topology if it's a new test case?

N/A — not a new test case; module skip only.

### Documentation

N/A

Signed-off-by: Deepak Singhal <deepsinghal@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: selldinesh <dinesh.sellappan@keysight.com>
Comment thread config/main.py
@mssonicbld

Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

ssithaia-ebay pushed a commit to ssithaia-ebay/sflow-yang-sonic-mgmt that referenced this pull request Jul 21, 2026
sonic-net#26175) (sonic-net#26176)

### Description of PR

Summary:
Fixes sonic-net#26175

Temporarily skip the whole `bgp/test_bgp_suppress_fib.py` module for the
suppress-fib-pending **dynamic-toggle race**.

The module toggles `suppress-fib-pending` dynamically at runtime (via
the shared `config_bgp_suppress_fib()` helper, no `config reload`). That
triggers a race between **orchagent, fpmsyncd and FRR** where routes are
intermittently **not marked offloaded in FRR** / **not propagated to the
upstream VM** within the wait window, failing essentially every case in
the module.

The root-cause fix makes `suppress-fib-pending` **static** (takes effect
only after a `config reload`), removing the race —
[sonic-swss#4333](sonic-net/sonic-swss#4333),
[sonic-buildimage#26151](sonic-net/sonic-buildimage#26151),
[sonic-utilities#4361](sonic-net/sonic-utilities#4361),
[sonic-mgmt#22916](sonic-net#22916),
[SONiC#2335](sonic-net/SONiC#2335).

> **The product fix is master-only and is not backported.** Because of
that, the skip uses **two different lift semantics**, expressed as
separate conditions:
>
> - **`master`** — gated on the tracking issue: `release in ['master']
and https://github.com/sonic-net/sonic-mgmt/issues/26175`. When the fix
lands on master and sonic-net#26175 is closed, the skip **auto-lifts** on master
and coverage returns — no manual edit needed.
> - **`202505` / `202511` / `202605`** — a plain `release in [...]`
condition with **no issue gate**. These branches never receive the
product fix, so the module is skipped for the life of the branch (same
nature as the existing pre-202411 "not supported" condition).
>
> **Per-branch effect still requires cherry-picking this skip.** Each
release branch's nightly runs its own `sonic-mgmt` checkout, so this
YAML change must be cherry-picked to 202505/202511/202605 for the skip
to take effect there. The identical diff matches on each branch via its
own `release` token.
>
> If a release branch ever does receive the product fix, drop that
branch's token from the `release in [...]` list — a deliberate
per-branch edit. sonic-net#26175 tracks the lifecycle.

### Type of change

- [ ] Bug fix
- [x] Testbed and Framework(new/improvement)
- [ ] New Test case
    - [ ] Skipped for non-supported platforms
- [ ] Test case improvement

### Back port request

- [ ] 202205
- [ ] 202305
- [ ] 202311
- [ ] 202405
- [ ] 202411
- [x] 202505
- [x] 202511

(also 202605 — not listed in the template checkboxes; cherry-pick
required there as well.)

### Approach
#### What is the motivation for this PR?

The `test_bgp_suppress_fib` module is a persistent nightly-noise source
across master and the active release branches. The dynamic runtime
toggle of `suppress-fib-pending` races orchagent/fpmsyncd/FRR, so routes
are intermittently left un-offloaded / un-propagated and nearly every
case in the module fails intermittently. Skipping the module de-noises
the nightly signal while the product-layer fix rolls out on master.

#### How did you do it?

Extended the existing `bgp/test_bgp_suppress_fib.py` skip block with
`conditions_logical_operator: or` and split the affected releases by
lift semantics:

```yaml
conditions:
  - "release in ['201811', '201911', '202012', '202205', '202211', '202305', '202311', '202405']"
  - "release in ['202505', '202511', '202605']"
  - "release in ['master'] and sonic-net#26175"
```

The `conditional_mark` plugin replaces the issue URL with `True`/`False`
based on the issue's open/closed state and `eval()`s the condition, so
the master line auto-lifts when sonic-net#26175 closes while the release-branch
line stays permanent. (The same file already uses the `<expr> and
<issue-url>` form for the `asic_type in ['vs'] and sonic-net#14449` conditions.)

#### How did you verify/test it?

- `tests_mark_conditions.yaml` parses cleanly and passes the
`check_conditional_mark_sort.py` pre-commit hook.
- Simulated the `conditional_mark` evaluation for each `release` value:
  - issue **open**: master + 202505/202511/202605 all skip;
- issue **closed**: master unskips, 202505/202511/202605 remain skipped
— matching the intended lift semantics.

#### Any platform specific information?

None — the skip is keyed on `release` only (all ASICs/topologies),
matching the all-vendor nature of the race.

#### Supported testbed topology if it's a new test case?

N/A — not a new test case; module skip only.

### Documentation

N/A

Signed-off-by: Deepak Singhal <deepsinghal@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: ssithaia-ebay <ssithaian@ebay.com>
@deepak-singhal0408

Copy link
Copy Markdown
Contributor

@mike-dubrovsky , please fix the Ci failure.
the new testcase contradicts the no-change early-return.

suppress-fib-pending config changes require a reload to take effect.

Changes:
- config/main.py: inform user that reload is required after
  changing suppress-fib-pending

Signed-off-by: mike-dubrovsky <mdubrovs@cisco.com>
@mssonicbld

Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines will not run the associated pipelines, because the pull request was updated after the run command was issued. Review the pull request again and issue a new run command.

@deepak-singhal0408

Copy link
Copy Markdown
Contributor

/azp run Azure.sonic-utilities

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

3 participants