View Issue Details

IDProjectCategoryView StatusLast Update
0007384NodeSets, XSDs and Generated CodeApi Changepublic2021-11-17 18:42
ReporterJim Luth Assigned ToRandy Armstrong  
PrioritynormalSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Target Version1.05.01 RC1Fixed in Version1.05.01 RC1 
Summary0007384: Missing reliable way to reflect file changes on the client side
Description

What I want to achieve is basically a reflection of a status of the file system inside the OPC UA Server, on a client side - a "cached" copy of what files and directories the server has. I believe this is a fairly common scenario (for efficiency reasons, offline work etc.). But I do not think it is achievable with 1.04 spec, because the client has no way to tell whether the file contents has changed.

In my scenario it is OK to be able to "sync" files data only when the file is in closed state (it is not necessary, and even not desirable, to be informed about every change).

What does not work:

  • You cannot take one of the existing FileType properties such as "Size" and detect changes, because the size does not have to change even if the data had changed.
  • You cannot take timestamps of any properties defined on FileType (at least not with the implementations I have tested with) and detect the changes; the timestamps can remain the same even if the file data has changed.
  • You cannot subscribe to the OpenCount property to detect that somebody is manipulating the file, for two reasons: a) The server can change file contents "from inside", without opening the file, and b) this does not allow to detect a change while the server was down and/or client was disconnected for any reason.

The proposed solution is to add some kind of version counter on the FileType that the server would have to increment whenever the file data have changed. A "false positive" (incrementing when not needed) would be in principle OK (just leading to an inefficiency in client-side caching). Ideally this would be made mandatory so that server implementors actually bother implementing it; but if not doable, it can stay optional.

An alternative solution would be a something like LastModifiedTime property.

For reliably, it is absolutely necessary that if there is any chance that the file contents have changed during server restart, the server shall increment the version counter or update the lastModifiedTime.

TagsNo tags attached.
Commit Version
Fix Due Date

Relationships

related to 0006970 closedJeff Harding 10000-020: File Transfer Missing reliable way to reflect file changes on the client side 

Activities

Zbynek Zahradnik

2021-11-03 21:42

reporter   ~0015255

Agreed on the meeting to add optional LastModifiedTime property to the FileType.

Add following text:
The property should be updated with the time the file has been modified, whenever the server detects that the file has changed.

Jeff Harding

2021-11-03 21:42

reporter   ~0015256

Agreed to add to 1.05 release

Jeff Harding

2021-11-03 21:42

reporter   ~0015257

Added the property with the following definition:

The optional LastModifiedTime Property indicates the time the file was last modified. The Property shall be updated whenever the Server detects that the file has changed.

Jim Luth

2021-11-03 21:42

administrator   ~0015258

Need to rollback from 1.05.0 and make the change in 1.05.01

Jeff Harding

2021-11-03 21:42

reporter   ~0015259

1.05.0 changes rolled back.

Jeff Harding

2021-11-03 21:42

reporter   ~0015260

Fixed in 1.05.1 version

Jim Luth

2021-11-03 21:43

administrator   ~0015261

Last edited: 2021-11-03 21:44

Add property to nodeset 1.05.01 RC1

Randy Armstrong

2021-11-16 20:12

administrator   ~0015321

Resolved in 1.05.1 nodeset.

Jim Luth

2021-11-17 18:42

administrator   ~0015355

Reviewed with Randy -- agreed to close.

Issue History

Date Modified Username Field Change
2021-11-03 21:42 Jim Luth New Issue
2021-11-03 21:42 Jim Luth Status new => assigned
2021-11-03 21:42 Jim Luth Assigned To => Randy Armstrong
2021-11-03 21:42 Jim Luth Issue generated from: 0006970
2021-11-03 21:42 Jim Luth Note Added: 0015255
2021-11-03 21:42 Jim Luth Note Added: 0015256
2021-11-03 21:42 Jim Luth Note Added: 0015257
2021-11-03 21:42 Jim Luth Note Added: 0015258
2021-11-03 21:42 Jim Luth Note Added: 0015259
2021-11-03 21:42 Jim Luth Note Added: 0015260
2021-11-03 21:42 Jim Luth Relationship added related to 0006970
2021-11-03 21:43 Jim Luth Note Added: 0015261
2021-11-03 21:43 Jim Luth Project 10000-020: File Transfer => NodeSets, XSDs and Generated Code
2021-11-03 21:43 Jim Luth Category Spec => Api Change
2021-11-03 21:44 Jim Luth Note Edited: 0015261
2021-11-16 20:12 Randy Armstrong Status assigned => resolved
2021-11-16 20:12 Randy Armstrong Resolution open => fixed
2021-11-16 20:12 Randy Armstrong Note Added: 0015321
2021-11-17 18:42 Jim Luth Status resolved => closed
2021-11-17 18:42 Jim Luth Fixed in Version => 1.05.01 RC1
2021-11-17 18:42 Jim Luth Note Added: 0015355