View Issue Details

IDProjectCategoryView StatusLast Update
000213710000-004: Servicespublic2012-08-16 18:48
ReporterThomas Merk Assigned ToPaul Hunkar  
PrioritynormalSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Product Version1.01 
Fixed in Version1.02 
Summary0002137: isOnline parameter in RegisterServer changed semantically
Description

In 1.01 a manually launched server had to register with isOnline set to false on shutdown.
In 1.02 the server must not do that registration - otherwise the discovery server assumes that this server is a "automatically launched" server.

A server implemented with specification 1.01 will still register as offline on shutdown.

In that case discovery server returns this server in the FindServers service even if not running and able to accepting connections (it is still a server that needs manual launch).
A client is not able to distinguish whether a server can be connected or not.

The problem is connected to issue 1796 and 1919.

TagsNo tags attached.
Commit Version
Fix Due Date

Relationships

related to 0002173 closedRandy Armstrong 10000-012: Discovery isOnline parameter in RegisterServer changed semantically 

Activities

Nathan Pocock

2012-07-26 19:13

viewer   ~0003924

This particular issue is something that was recently found in the lab, and we also need the clarification.

Matthias Damm

2012-07-31 16:34

developer   ~0003937

Discussed in telco today.

During the implementation of the LDS and work on the discovery specification the use of the isOnline flag was changed in OPC UA part 12. This happened right after release of OPC UA Part 4 1.01

We changed the specification for 1.02 because all implementations working with the discovery server of the OPC Foundation need to work like described in Part 12 or now in OPC UA Part 4 version 1.02. This was the reason why we did this semantic change since this change was applied to applications working with the LDS since a long time.

Thomas Merk

2012-08-01 06:56

reporter   ~0003938

I still do not think that the new specification is a good solution.
Because of the semantic change all servers implementing 1.01 specification will be listed forever in discovery server.

Beside that also servers implementing 1.02 are not able to notify discovery server that the server is shutting down.
After some timeout the discovery server removes the server from the list of available server but until this timeout is expired the server will be listed and a client has no chance to get a list of all servers which will respond requests.

Nathan Pocock

2012-08-01 15:04

viewer   ~0003941

I agree with Thomas. I understand the intent and also the desire to maintain backward compatibility, but I would hate to be a vendor receiving calls as to why Clients can't connect to their servers even though their servers are listed as available and causing that customer to waste time troubleshooting; and once word gets out that this is the intended behavior then we'll get a poke in the eye.

I realize how akward this is becuase of on-demand servers that are currently offline and how they would not be polling/registering with the LDS to set IsOnline=True.I get that.

Part 12 (I'm looking at v1.02 DRAFT 7) discusses the "semaphore file" 4 times, and it is obviously an important concept, but there are no instructions/guidelines about this file, and there are no references for more information. It seems that this file is intended to be what the IsOnline parameter used to be. Is that correct?

Thomas Merk

2012-08-02 09:26

reporter   ~0003942

A suggestion for change:

Combine the isOnline flag with the semaphoreFilePath.
Accept offline registration only if a semaphore file path is specified.
If no sepmaphore file path is specified (value null or empty) a server launched on demand never will be unregistered.

The usage of an optional semaphoreFilePath to identify the server instance is not needed since the mandatory serverUri can be used to identify the server instance.

semaphoreFilePath:
The path to the semaphore file used to verify that a server instance is able to accept Client connections. The LocalDiscoveryServer shall verify the existence of any semaphore file provided by the Server before accepting the registration.
The DiscoveryServer shall check that this file exists before returning the ApplicationDescription to the client.
If this file disappears the LocalDiscoveryServer shall remove the registration from any persistent data store.
If this value is null or empty then the DiscoveryServer does not attempt to verify the existence of the file.

isOnline:
If the IsOnline flag is set to TRUE, the Server is expected to periodically register with the LocalDiscoveryServer to remain listed in the Server list of the LocalDiscoveryServer.
If the IsOnline flag is set to FALSE and a semaphoreFilePath is specified, the Server is not running and thus not expected to perform periodically registration. The Server is still able to accept Client connections (automatically launched) as long as the semaphore file exists. The LocalDiscoveryServer shall save the registration information in a persistent data store that it reads whenever the LocalDiscoveryServer starts. Servers registering with this information shall be listed in the Server list of the LocalDiscoveryServer.
If the IsOnline flag is set to FALSE and no semaphoreFilePath is specified or the file does not exist, the LocalDiscoveryServer shall remove the registration from any persistent data store. Servers registering with this information are not expected to accept Client connections and shall be removed from the Server list of the LocalDiscoveryServer.

Figure 11 would be reverted to the figure in version 1.01.
A note should be added that manually launched servers registering offline shall not specify a permanent semaphore file.

This would still mean a little semantic change - at least offline registration of manually launched servers ist still possible.

The usage of semaphore files in version 1.01 is not clearly stated - especially for manually lauched servers. Since the server shall register offline on shutdown a semaphore file is not needed at all for those servers.

Matthias Damm

2012-08-10 09:10

developer   ~0003974

We decided in the phone conference on August 7th, 2012 to not change the specification again.

Jim Luth

2012-08-16 18:43

administrator   ~0003977

Agreed to reopen issue in telecon 2012-08-14. Paul agreed to edit the changes into the final 1.02 version for publication. The agreement is to separate the use of IsOnline from the use of the semaphore file.

Jim Luth

2012-08-16 18:44

administrator   ~0003978

Fixed in version "OPC UA Part 4 - Services 1.02 Specification+PEH.doc"

Jim Luth

2012-08-16 18:45

administrator   ~0003979

Pauls edits and some additional edits by me made it into the final 1.02 version.

Issue History

Date Modified Username Field Change
2012-07-26 10:14 Thomas Merk New Issue
2012-07-26 19:13 Nathan Pocock Note Added: 0003924
2012-07-31 16:33 Matthias Damm Status new => assigned
2012-07-31 16:33 Matthias Damm Assigned To => Matthias Damm
2012-07-31 16:34 Matthias Damm Status assigned => resolved
2012-07-31 16:34 Matthias Damm Resolution open => won't fix
2012-07-31 16:34 Matthias Damm Note Added: 0003937
2012-08-01 06:56 Thomas Merk Status resolved => feedback
2012-08-01 06:56 Thomas Merk Resolution won't fix => reopened
2012-08-01 06:56 Thomas Merk Note Added: 0003938
2012-08-01 15:04 Nathan Pocock Note Added: 0003941
2012-08-02 09:26 Thomas Merk Note Added: 0003942
2012-08-10 09:10 Matthias Damm Status feedback => resolved
2012-08-10 09:10 Matthias Damm Resolution reopened => won't fix
2012-08-10 09:10 Matthias Damm Note Added: 0003974
2012-08-16 18:43 Jim Luth Assigned To Matthias Damm => Paul Hunkar
2012-08-16 18:43 Jim Luth Status resolved => feedback
2012-08-16 18:43 Jim Luth Resolution won't fix => reopened
2012-08-16 18:43 Jim Luth Note Added: 0003977
2012-08-16 18:44 Jim Luth Status feedback => resolved
2012-08-16 18:44 Jim Luth Fixed in Version => 1.02
2012-08-16 18:44 Jim Luth Resolution reopened => fixed
2012-08-16 18:44 Jim Luth Note Added: 0003978
2012-08-16 18:45 Jim Luth Status resolved => closed
2012-08-16 18:45 Jim Luth Note Added: 0003979
2012-08-16 18:46 Jim Luth Issue cloned: 0002173
2012-08-16 18:46 Jim Luth Relationship added related to 0002173
2012-08-16 18:48 Jim Luth Issue cloned: 0002174