fix: check Exclusive Owner conflicts by O-to-T output assembly#594
Open
MrAlaskan wants to merge 1 commit into
Open
Conversation
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.
Summary
This PR fixes the Exclusive Owner ownership conflict check so that conflicts are detected per O-to-T output assembly, which is the actual control point for an Exclusive Owner I/O connection.
Problem
The current implementation matches an Exclusive Owner path combo using the configured output assembly against
consumed_path.instance_idand the input assembly againstproduced_path.instance_id, which is consistent with the connection point semantics inappcontype.c.However, the subsequent ownership conflict check calls
GetConnectedOutputAssembly(connection_object->produced_path.instance_id), andGetConnectedOutputAssembly()also compares againstproduced_path.instance_id. As a result, the code effectively checks for an existing Exclusive Owner on the same T-to-O input assembly instead of the same O-to-T output assembly.This contradicts the local data model and comments in
appcontype.c, whereoutput_assemblyis documented as the O-to-T point and Exclusive Owner is described as allowing only one connection per O-to-T point.Changes
consumed_path.instance_idtoGetConnectedOutputAssembly()when checking for an existing Exclusive Owner connection.GetConnectedOutputAssembly()to match active Exclusive Owner connections byconsumed_path.instance_idinstead ofproduced_path.instance_id.