View Issue Details

IDProjectCategoryView StatusLast Update
000462410000-014: PubSubSpecpublic2019-09-16 07:11
ReporterZbynek Zahradnik Assigned ToMatthias Damm  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionwon't fix 
Summary0004624: Free choice of namespace in browse names of PubSub objects causes usability problems
Description

This refers to any case in PubSub where a named PubSub component has a non-constant browse name. Just as an example, take the PubSubConnectionType, which has HasComponent references to its writer groups and reader groups. The BrowseName of these depends on the configuration

In my use case, I am writing a library that is a subscriber. I want to be able to specify the necessary information physically (such as with URL, publisherId, writer group Id, dataset writer ID etc.), or logically: By referring to a PubSub configuration, and using names (name of connection, name of writer group, name of the dataset writer). In the latter case, the logical information is first resolved into a physical one by the library.

For the resolution process, I want the configuration reside either in a binary file, or "live" in OPC UA server with the PubSub configuration model in it, and it should look the same to the developer.

When referring to PubSub components that are in the configuration file, I need just strings. There are no namespaces with them.
However, when referring to PubSub components within an address space, I also need a namespace.
I originally (incorrectly) assumed that these browse names will be in namespace 0. But as it turns out, each server puts them into its own namespace, as they see fit.

This means that with, having just a string, I cannot use translation of browse paths. A solution would be to have the developer using my library specify the names by "full" browse names, but that is ugly, and does not then fit with the case when the configuration is loaded from the file.

In essence, any programmatic tool that wants to deal with PubSub configuration and look up components by name will confront this issue.

Another use case where this disparity (between configuration in a file and in the server) causes problem is when a configuration is exported and then imported again. There is no guarantee that this roundtrip will recreate the same configuration, because the PubSub components may end up in different namespaces.

Possible solutions:
1) Somehow also store the namespaces of the PubSub component names in the configuration data/file. I do not like this.
2) Specify that these BrowseNames will use namespace 0. This probably won't go through, but I wanted to mention it. No conflict will arise because they are just BrowseNames, not NodeIds, but I understand that it is against the idea o having the standard namespace reserved for standard entities only.
3) We will specify a URL, different from the standard namespace, for a single namespace where all these BrowseNames for PubSub component will live. This is my preferred solution.

Disadvantage of solutions 2) and 3) is that they complicate merging/aggregation, but I do not think this a show stopper.

TagsNo tags attached.
Commit Version
Fix Due Date

Relationships

related to 0005033 acknowledged 10000-004: Services TranslateBrowsePath does not work for components related to placeholder modelling rule 

Activities

Matthias Damm

2019-09-10 21:54

developer   ~0010951

Use server namespace (1)

Matthias Damm

2019-09-11 09:11

developer   ~0010954

9.1.5.2 PubSubConnectionType
Add
The BrowseName of instances of the PubSubConnectionType shall be constructed from the Name String in the PubSubConnectionDataType and the namespace index 1 representing the local Server.

9.1.6.3 WriterGroupType
Add
The BrowseName of instances of the WriterGroupType shall be constructed from the Name String in the WriterGroupDataType and the namespace index 1 representing the local Server.

9.1.6.9 ReaderGroupType
Add
The BrowseName of instances of the ReaderGroupType shall be constructed from the Name String in the ReaderGroupDataType and the namespace index 1 representing the local Server.

9.1.7.2 DataSetWriterType
Add
The BrowseName of instances of the DataSetWriterType shall be constructed from the Name String in the DataSetWriterDataType and the namespace index 1 representing the local Server.

9.1.8.2 DataSetReaderType
Add
The BrowseName of instances of the DataSetReaderType shall be constructed from the Name String in the DataSetReaderDataType and the namespace index 1 representing the local Server.

9.1.4.2.1 PublishedDataSetType
Add
The BrowseName of instances of the PublishedDataSets shall be constructed from the Name String provided during creation and the namespace index 1 representing the local Server.

9.1.4.5.1 DataSetFolderType
Add
The BrowseName of instances of the DataSetFolderType shall be constructed from the Name String provided during creation and the namespace index 1 representing the local Server.

Matthias Damm

2019-09-11 10:35

developer   ~0010957

The UA WG decided to revert this change and to change this to a no fix.

Matthias Damm

2019-09-11 10:36

developer   ~0010958

The UA WG decided to keep this undefined to have exactly the same behaviour clients are used from other information models that have placeholder components.

Jim Luth

2019-09-11 10:43

administrator   ~0010959

Last edited: 2019-09-16 07:11

Agreed to no-fix in meeting. Better solution is to provide a more powerful TranslateBrowsePath aka a new "simple" query - see related 0005033. Implementations are free to use any namespace, not just namespace 1.

Issue History

Date Modified Username Field Change
2019-02-15 12:27 Zbynek Zahradnik New Issue
2019-02-26 22:40 Matthias Damm Assigned To => Matthias Damm
2019-02-26 22:40 Matthias Damm Status new => assigned
2019-09-10 21:54 Matthias Damm Note Added: 0010951
2019-09-11 09:11 Matthias Damm Status assigned => resolved
2019-09-11 09:11 Matthias Damm Resolution open => fixed
2019-09-11 09:11 Matthias Damm Note Added: 0010954
2019-09-11 10:35 Matthias Damm Status resolved => feedback
2019-09-11 10:35 Matthias Damm Resolution fixed => reopened
2019-09-11 10:35 Matthias Damm Note Added: 0010957
2019-09-11 10:36 Matthias Damm Status feedback => resolved
2019-09-11 10:36 Matthias Damm Resolution reopened => won't fix
2019-09-11 10:36 Matthias Damm Note Added: 0010958
2019-09-11 10:43 Jim Luth Status resolved => closed
2019-09-11 10:43 Jim Luth Note Added: 0010959
2019-09-11 10:44 Jim Luth Relationship added related to 0005033
2019-09-16 07:11 Jim Luth Note Edited: 0010959