[fix] remove ASIC ports before replication cleanup on empty transition#232
Open
zeeshanlakhani wants to merge 1 commit intomainfrom
Open
[fix] remove ASIC ports before replication cleanup on empty transition#232zeeshanlakhani wants to merge 1 commit intomainfrom
zeeshanlakhani wants to merge 1 commit intomainfrom
Conversation
6ed1122 to
c0cc2dc
Compare
When all members are removed from a multicast group, the (true, true) transition path cleaned up replication table entries but skipped process_membership_changes, leaving stale ports in the ASIC groups. Subsequent re-adds failed with "already contains port" (500). This fix calls process_membership_changes before cleanup_empty_group_replication so mc_port_remove runs on every port. Extend the IPv6 empty-then-add integration test to cover the full add -> remove all -> re-add cycle.
c0cc2dc to
5a4f56e
Compare
zeeshanlakhani
added a commit
to oxidecomputer/omicron
that referenced
this pull request
Mar 2, 2026
This includes a few changes I was already working on in relation to #9898. This comes after testing with a feature-gated (for multicast) dpd binary. There's a minor follow-up (oxidecomputer/dendrite#232) that I'll work in after this. - Use actual group tags from DPD responses instead of hardcoded "nexus" - Rename IntoUnderlayMulticastIpv6 -> IntoUnderlayMulticast (shorter), fits trait definition / more accurate - Pass MulticastTag as parameter to dpd_update_external_or_create - Use existing_tag.try_into() / current_tag.try_into() for tag usage - Nit: dpd_state_matches_tag to use as_str() comparison - Fix: IpSrc::Subnet -> IpSrc::Any (new dendrite API) - Fix: SwitchLocation import (moved to sled_agent_types) - Remove unused multicast type imports
zeeshanlakhani
added a commit
to oxidecomputer/omicron
that referenced
this pull request
Mar 2, 2026
This includes a few changes I was already working on in relation to #9898. This comes after testing with a feature-gated (for multicast) dpd binary. There's a minor follow-up (oxidecomputer/dendrite#232) that I'll work in after this. - Use actual group tags from DPD responses instead of hardcoded "nexus" - Rename IntoUnderlayMulticastIpv6 -> IntoUnderlayMulticast (shorter), fits trait definition / more accurate - Pass MulticastTag as parameter to dpd_update_external_or_create - Use existing_tag.try_into() / current_tag.try_into() for tag usage - Nit: dpd_state_matches_tag to use as_str() comparison - Fix: IpSrc::Subnet -> IpSrc::Any (new dendrite API) - Fix: SwitchLocation import (moved to sled_agent_types) - Remove unused multicast type imports
zeeshanlakhani
added a commit
to oxidecomputer/omicron
that referenced
this pull request
Mar 2, 2026
… recovery path This matches Dendrite PR oxidecomputer/dendrite#232. This update dendrite rev to 5a4f56e (oxidecomputer/dendrite#232), which fixes the empty-transition in `modify_group_internal`. With the fix, the delete+recreate recovery path in `modify_group_membership` is no longer needed. Errors now propagate directly and the reconciler handles drift on the next pass.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When all members are removed from a multicast group, the (true, true) transition path cleaned up replication table entries but skipped process_membership_changes, leaving stale ports in the ASIC groups. Subsequent re-adds failed with "already contains port" (500).
This fix calls process_membership_changes before cleanup_empty_group_replication so mc_port_remove runs on every port. Extend the IPv6 empty-then-add integration test to cover the full add -> remove all -> re-add cycle.
References: