Files
MrAlaskan 8602d40cff fix(alias): compare PortableNodeId identifiers by NodeId semantics (#4037)
### Summary

This PR fixes `AliasNamePubSubRefreshStrategy` category matching for
string NodeIds whose identifier contains semicolons and adds a
regression test covering that scenario.

### Problem

`AliasNamePubSubRefreshStrategy` is supposed to match the publisher's
`PortableNodeId.Identifier` against the local alias category `NodeId`
while ignoring namespace index differences. However, the previous
implementation did that by converting both NodeIds to text and stripping
everything before the first `;`.

That happened to work for simple identifiers such as
`ns=1;s=MyCategory`, but it broke for valid string NodeIds whose
identifier itself contains semicolons. For example, when the local
category is `ns=1;s=A;B`, the previous logic transformed the local value
into `s=A;B` but transformed the already namespace-free portable form
`s=A;B` into just `B`. As a result, both sides represented the same
identifier semantically, yet the refresh strategy could never match them
and would silently ignore legitimate alias update messages for that
category.

### Changes

- Replace the string-prefix stripping comparison in
`AliasNamePubSubRefreshStrategy` with namespace-insensitive `NodeId`
equality, preserving the original identifier type and value.
- Add a regression test that verifies a PubSub alias update for a
category such as `s=A;B` still invalidates the local cache.
2026-07-20 08:26:32 +02:00
..