View Issue Details

IDProjectCategoryView StatusLast Update
000985010000-012: DiscoverySpecpublic2024-10-15 16:03
ReporterMarcel Patzlaff Assigned ToRandy Armstrong  
PrioritynormalSeveritymajorReproducibilityalways
Status closedResolutionreopened 
Product Version1.05.03 
Fixed in Version1.05.04 
Summary0009850: Figure 22 in Part 12, Chapter 7.10
Description

The transaction part of TrustLists in Figure 22 at https://reference.opcfoundation.org/GDS/v105/docs/7.10 does not fit to the descriptions of Open(Write+EraseExisting) and CloseAndUpdate(). The creation of a new transaction is depicted at "Open()" while it is described to be at "CloseAndUpdate()".

This issue is still present in the 1.05.04 RC1.

TagsNo tags attached.
Commit Version
Fix Due Date

Activities

Randy Armstrong

2024-10-06 14:06

administrator   ~0021834

Moved transaction creation to the TrustList Open method.

Marcel Patzlaff

2024-10-07 05:23

reporter   ~0021839

This change caught me by surprise now. The description for transactions made perfectly sense to me. Also the CloseAndUpdate() method looks like a perfect equivalent to the UpdateCertificate() method and therefore hints that it is responsible to create a transaction. This makes also sense, because only CloseAndUpdate() has all information required to validate the new data before creating a transaction for it - like UpdateCertificate() is able to do for Application Instance Certificates.

Moving the transaction creation to the Open() method also introduces additional complexity: what shall happen to the transaction if validation fails in CloseAndUpdate() or the Close() method is called? These situations basically mean that no changes are to be applied to the opened trust list. But the server cannot blindly discard the new transaction now because there might be other changes already scheduled with it. This looks rather complex and also has to be specified where the most obvious change to me would have been to just adapt the diagram to the described behaviour.

Randy Armstrong

2024-10-07 19:38

administrator   ~0021851

Needed to address the race condition issue you mentioned in another issue.

Also, the new file based update mechanism which will be the preferred mechanism moving forward effectively requires the same thing.

Transactions exist based on the assumption that changes need to applied all at once or not all.

Marcel Patzlaff

2024-10-08 04:23

reporter   ~0021855

OK that's fine for me. This seems to keep the complexity relatively low. I assume that the following cases shall then discard an open transaction:

  • calling "Close()" on a TrustList opened for writing
  • any failure when calling "CloseAndUpdate()" on a TrustList opened for writing
  • any failure when calling "UpdateCertificate()"

Randy Armstrong

2024-10-15 16:01

administrator   ~0021889

Fixed by moving transaction creation to the Open().

The CancelChanges method is used to clear up any transaction.
If it is not called, transactions close if the Session is times out.

Jim Luth

2024-10-15 16:03

administrator   ~0021890

Agreed to changes in web meeting.

Issue History

Date Modified Username Field Change
2024-09-23 08:01 Marcel Patzlaff New Issue
2024-10-06 14:06 Randy Armstrong Assigned To => Randy Armstrong
2024-10-06 14:06 Randy Armstrong Status new => resolved
2024-10-06 14:06 Randy Armstrong Resolution open => fixed
2024-10-06 14:06 Randy Armstrong Note Added: 0021834
2024-10-07 05:23 Marcel Patzlaff Status resolved => feedback
2024-10-07 05:23 Marcel Patzlaff Resolution fixed => reopened
2024-10-07 05:23 Marcel Patzlaff Note Added: 0021839
2024-10-07 19:38 Randy Armstrong Note Added: 0021851
2024-10-08 04:23 Marcel Patzlaff Note Added: 0021855
2024-10-08 04:23 Marcel Patzlaff Status feedback => assigned
2024-10-15 16:01 Randy Armstrong Status assigned => resolved
2024-10-15 16:01 Randy Armstrong Note Added: 0021889
2024-10-15 16:03 Jim Luth Status resolved => closed
2024-10-15 16:03 Jim Luth Fixed in Version => 1.05.04
2024-10-15 16:03 Jim Luth Note Added: 0021890