Skip to content

[bgp]: Skip test_bgp_suppress_fib for suppress-fib dynamic-toggle race (#26175)#26176

Merged
StormLiangMS merged 1 commit into
sonic-net:masterfrom
deepak-singhal0408:fix/26175-suppress-fib-skip
Jul 16, 2026
Merged

[bgp]: Skip test_bgp_suppress_fib for suppress-fib dynamic-toggle race (#26175)#26176
StormLiangMS merged 1 commit into
sonic-net:masterfrom
deepak-singhal0408:fix/26175-suppress-fib-skip

Conversation

@deepak-singhal0408

@deepak-singhal0408 deepak-singhal0408 commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

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-buildimage#26151, sonic-utilities#4361, sonic-mgmt#22916, 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:

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
  • Testbed and Framework(new/improvement)
  • New Test case
    • Skipped for non-supported platforms
  • Test case improvement

Back port request

  • 202205
  • 202305
  • 202311
  • 202405
  • 202411
  • 202505
  • 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:

conditions:
  - "release in ['201811', '201911', '202012', '202205', '202211', '202305', '202311', '202405']"
  - "release in ['202505', '202511', '202605']"
  - "release in ['master'] and https://github.com/sonic-net/sonic-mgmt/issues/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

@mssonicbld

Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

@github-actions

Copy link
Copy Markdown

@StormLiangMS @wangxin @yxieca A user wants to merge changes to the conditional mark files into master. Please review.

@azure-pipelines

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

@deepak-singhal0408 deepak-singhal0408 self-assigned this Jul 14, 2026
@deepak-singhal0408
deepak-singhal0408 force-pushed the fix/26175-suppress-fib-skip branch from 58f9420 to 0290b42 Compare July 14, 2026 22:21
@mssonicbld

Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines

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

sonic-net#26175)

The module toggles suppress-fib-pending dynamically at runtime, triggering an
orchagent/fpmsyncd/FRR race where routes are intermittently not marked offloaded
in FRR / not propagated to the upstream VM, failing essentially every case.

The product fix makes suppress-fib static (sonic-swss#4333 + sonic-mgmt#22916) and
is merging to master only; it is not backported. The skip therefore distinguishes
lift semantics per branch:
  - master: auto-lifts once the fix lands and sonic-net#26175 is closed (issue-gated).
  - 202505/202511/202605: fix never backported -> permanent skip for the branch.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8fc0c0b6-c1f5-43a8-b645-c1d2ebb82361
Signed-off-by: Deepak Singhal <deepsinghal@microsoft.com>
@deepak-singhal0408
deepak-singhal0408 force-pushed the fix/26175-suppress-fib-skip branch from 0290b42 to 106475b Compare July 15, 2026 03:39
@mssonicbld

Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines

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

@deepak-singhal0408 deepak-singhal0408 changed the title [bgp]: Temporarily skip test_bgp_suppress_fib for suppress-fib dynamic-toggle race (#26175) [bgp]: Skip test_bgp_suppress_fib for suppress-fib dynamic-toggle race (#26175) Jul 15, 2026
@deepak-singhal0408

Copy link
Copy Markdown
Contributor Author

Cross-release flakiness context

Data from SonicTestData.V2TestCases (since 2026-03-15) shows this is not a single-branch issue — the suppress-fib dynamic-toggle race is present across release trains, and its rate is topology-dependent:

Branch FRR test_credit_loop fail %
202511 10.4.1 ~10%
202605 10.5.4 ~28%
master 10.5.4 ~1% (t1-lag-only nightly coverage)

Notes:

  • master's low rate is a coverage artifact, not immunity — its nightly runs this module almost exclusively on t1-lag (~1.2% fail over ~990 runs), where the race rarely fires. The failures concentrate on the heavier release-nightly topologies that master doesn't exercise at volume.
  • The race is present on both 10.4.1 (202511, ~10%) and 10.5.4 (202605, ~28%) — it is a pre-existing flake, not a new failure on any one branch.

This is why the skip is kept permanent on 202511/202605 and only auto-lifts on master once the underlying fix lands.

@mssonicbld

Copy link
Copy Markdown
Collaborator

This PR has backport request for branch(es): 202505,202511.

Request label(s) for branch(es) 202511 already exists.
Added label(s) for branch(es) 202505.

---Powered by SONiC BuildBot

@StormLiangMS StormLiangMS left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM

@StormLiangMS
StormLiangMS merged commit c859f53 into sonic-net:master Jul 16, 2026
27 checks passed
@mssonicbld

Copy link
Copy Markdown
Collaborator

@deepak-singhal0408 PR conflicts with 202605 branch

@mssonicbld

Copy link
Copy Markdown
Collaborator

This PR is approved for branch 202605. No cherry pick PR has been created because of code conflict. @deepak-singhal0408, please manually create the cherry pick PR.
If this change is already in 202605, please comment "already in 202605". Thanks!

---Powered by SONiC BuildBot

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>
deepak-singhal0408 added a commit to deepak-singhal0408/sonic-mgmt that referenced this pull request Jul 16, 2026
…fib dynamic-toggle race)

Backport intent of sonic-net#26176 (dynamic-toggle race skip) to
the 202605 release branch.

The bgp/test_bgp_suppress_fib.py module toggles suppress-fib-pending
dynamically at runtime, causing an orchagent/fpmsyncd/FRR race where routes
are intermittently not offloaded in FRR / not propagated to the upstream VM.
The product fix that makes suppress-fib static (sonic-swss#4333 +
sonic-mgmt#22916) is master-only and is NOT backported to 202605, so the whole
module is skipped for the life of the branch.

On a 202605 checkout 'release' is invariantly '202605', so a single
unconditional 'release in ["202605"]' skip cleanly expresses whole-module
skip on this branch (no cross-branch release tokens, no master auto-lift gate,
no VS-only narrowing). sonic-net#25598's VS re-scope is intentionally not backported.

Tracked by sonic-net#26175

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

Copy link
Copy Markdown
Contributor Author

This PR is approved for branch 202605. No cherry pick PR has been created because of code conflict. @deepak-singhal0408, please manually create the cherry pick PR.If this change is already in 202605, please comment "already in 202605". Thanks!

---Powered by SONiC BuildBot

created a manual cherry-pick PR. #26270

@mssonicbld

Copy link
Copy Markdown
Collaborator

The cherry pick conflict has been handled manually. Removing cherry pick conflict label...

---Powered by SONiC BuildBot

deepak-singhal0408 added a commit to deepak-singhal0408/sonic-mgmt that referenced this pull request Jul 17, 2026
…fib dynamic-toggle race)

Backport of the whole-module skip from sonic-net#26176 to the
202605 release branch.

The bgp/test_bgp_suppress_fib.py module toggles suppress-fib-pending
dynamically at runtime, causing an orchagent/fpmsyncd/FRR race where routes
are intermittently not offloaded in FRR / not propagated to the upstream VM.
The product fix that makes suppress-fib static (sonic-swss#4333 +
sonic-mgmt#22916) is master-only and is NOT backported to 202605, so the whole
module is skipped for the life of the branch.

To keep this file consistent with master (and avoid future cherry-pick
conflicts flagged in review), the skip block is set byte-identical to master's
sonic-net#26176 form rather than a branch-local condition. On a 202605 checkout the
'release in ["202505", "202511", "202605"]' condition matches, so the whole
module is skipped. sonic-net#25598's VS re-scope is intentionally not backported -- the
whole-module skip makes its per-case VS key inert on 202605.

Tracked by sonic-net#26175

Signed-off-by: Deepak Singhal <deepsinghal@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 566f78e6-4a5f-4240-ac6e-9e38d1662b54
@mssonicbld

Copy link
Copy Markdown
Collaborator

This PR has backport request for branch(es): 202505,202511.

Request label(s) for branch(es) 202511 already exists.
Added label(s) for branch(es) 202505.

---Powered by SONiC BuildBot

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 added a commit to deepak-singhal0408/sonic-mgmt that referenced this pull request Jul 23, 2026
…fib dynamic-toggle race)

Backport of the whole-module skip from sonic-net#26176 to the
202605 release branch.

The bgp/test_bgp_suppress_fib.py module toggles suppress-fib-pending
dynamically at runtime, causing an orchagent/fpmsyncd/FRR race where routes
are intermittently not offloaded in FRR / not propagated to the upstream VM.
The product fix that makes suppress-fib static (sonic-swss#4333 +
sonic-mgmt#22916) is master-only and is NOT backported to 202605, so the whole
module is skipped for the life of the branch.

To keep this file consistent with master (and avoid future cherry-pick
conflicts flagged in review), the skip block is set byte-identical to master's
sonic-net#26176 form rather than a branch-local condition. On a 202605 checkout the
'release in ["202505", "202511", "202605"]' condition matches, so the whole
module is skipped. sonic-net#25598's VS re-scope is intentionally not backported -- the
whole-module skip makes its per-case VS key inert on 202605.

Tracked by sonic-net#26175

Signed-off-by: Deepak Singhal <deepsinghal@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 566f78e6-4a5f-4240-ac6e-9e38d1662b54
StormLiangMS pushed a commit that referenced this pull request Jul 24, 2026
…fib dynamic-toggle race) (#26270)

### Description of PR

**202605 backport** of [sonic-mgmt
#26176](#26176).

Summary:
Skip the whole `bgp/test_bgp_suppress_fib.py` module on the **202605**
release branch. The module
toggles `suppress-fib-pending` dynamically at runtime, causing an
orchagent/fpmsyncd/FRR race where
routes are intermittently **not offloaded in FRR / not propagated to the
upstream VM**. The product
fix that makes `suppress-fib-pending` static (config-reload only) is
**master-only and is not
backported to 202605**, so the module is skipped for the life of the
branch.
Tracked by [sonic-mgmt issue
#26175](#26175).

> **Holistic context — two master PRs touched this block, neither is on
202605:**
> - [#25598](#25598) —
un-skipped select VS control-plane
>   cases (refactored the whole-file VS skip into per-case skips).
> - [#26176](#26176) — then
skipped the *whole module*
> for the dynamic-toggle race (auto-lifts on master once the product fix
lands + [issue
#26175](#26175) closes).
>
> On 202605 the product fix will **not** land. Per review feedback, this
PR sets the
> `bgp/test_bgp_suppress_fib.py:` skip block **byte-identical to
master** (the
[#26176](#26176) form)
> so the file stays consistent across branches and future edits
cherry-pick cleanly. We still do
> **not** backport
[#25598](#25598 VS
re-scope — the whole-module skip makes its per-case VS key inert on
202605.

### 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
- [ ] 202505
- [ ] 202511

(This **is** the 202605 backport PR — base branch `202605`.)

### Approach

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

Each release branch's nightly runs its own `sonic-mgmt` checkout.
Without this skip,
`test_bgp_suppress_fib` is a persistent nightly-noise source on 202605
(the dynamic-toggle race with
no product fix on this branch).

#### How did you do it?

A literal `git cherry-pick` of `c859f53` (master
[#26176](#26176)) does
**not** apply cleanly,
because [#26176](#26176) is
stacked on
[#25598](#25598) (which
reshaped this block on master) and #25598 was never
backported to 202605. So
[#26176](#26176 content
is applied by hand: the
`bgp/test_bgp_suppress_fib.py:` skip block is set **identical to
master**:

```yaml
bgp/test_bgp_suppress_fib.py:
  skip:
    reason: "(1) Not supported before release 202411.
             (2) suppress-fib dynamic-toggle offload/propagation race: the module toggles
             suppress-fib-pending dynamically at runtime, causing an orchagent/fpmsyncd/FRR race
             where routes are intermittently not offloaded in FRR / not propagated to the upstream VM.
             The product fix that makes suppress-fib static (sonic-swss#4333 + sonic-mgmt#22916) is
             merging to master only and is not backported. Therefore master auto-lifts once the fix
             lands and the tracking issue is closed, while the release branches 202505/202511/202605
             never receive the fix and stay skipped for the life of the branch.
             Tracked by #26175"
    conditions_logical_operator: or
    conditions:
      - "release in ['201811', '201911', '202012', '202205', '202211', '202305', '202311', '202405']"
      - "release in ['202505', '202511', '202605']"
      - "release in ['master'] and #26175"
```

On a 202605 checkout the `release in ['202505', '202511', '202605']`
condition matches, so the whole
module is skipped on all ASICs/topologies; the `'master'` +
[#26175](#26175
auto-lift line is inert here (never lifts on 202605, which is the
intent). Keeping the block identical
to master addresses the review concern about cross-branch consistency /
future cherry-pick conflicts.

> Note: [#25598](#25598
VS re-scope (a separate
> `bgp/test_bgp_suppress_fib.py::test_bgp_route_with_suppress:` per-case
key) is intentionally **not**
> backported — it would be inert under the whole-module skip on 202605.
As a result this region is not
> 100% byte-identical to master (master carries that extra per-case
key), so an edit touching that exact
> boundary could still need a manual resolution; the skip **conditions**
themselves now match master.

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

- `tests_mark_conditions.yaml` parses cleanly (`yaml.safe_load`) and the
`bgp/test_bgp_suppress_fib.py:`
  block is verified **byte-identical** to master.
- The skip condition `release in ['202505', '202511', '202605']`
evaluates **True** on a 202605
  checkout → whole module skipped on all ASICs/topologies.

#### Any platform specific information?

None — the whole-module skip is keyed on `release` only (all
ASICs/topologies).

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

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

### Documentation

N/A

Signed-off-by: Deepak Singhal <deepsinghal@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 566f78e6-4a5f-4240-ac6e-9e38d1662b54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[bgp][test_bgp_suppress_fib] Whole module flaky on master & release branches — suppress-fib dynamic-toggle offload/propagation race

3 participants