View Issue Details

IDProjectCategoryView StatusLast Update
000200110000-004: Servicespublic2012-04-23 16:15
ReporterNathan PocockAssigned ToMatthias Damm  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Fixed in Version1.02 
Summary0002001: 5.13.2.2 CreateSubscription Parameters Table 83: Priority field clarification
Description

CMPWG 4-12-2012:

The Priority of a subscription is currently described as:

"Indicates the relative priority of the Subscription. When more than one Subscription needs to send Notifications, the Server should dequeue a Publish request to the Subscription with the highest priority number. For Subscriptions with equal priority the Server should dequeue Publish requests in a round-robin fashion. When the keep-alive period expires for a Subscription it shall take precedence regardless of its priority, in order to prevent the Subscription from expiring.
A Client that does not require special priority settings should set this value to zero."

This explanation does not describe how to prevent a subscription from never being serviced, except when its keep alive period matures. Here's a pseudo of our current thoughts/concerns:

  1. create 2 subscriptions with different priorities, e.g. 10 and 30.
  2. add several items to both subscriptions.
  3. call Publish; you get data from sub with priority = 30.
    -- now suppose items change value in sub where priority = 30
  4. call Publish and ack the last sequence; which subscription is received now?
    a. subscription with priority = 30 because it has the higher priority?
    b. subscription with priority = 10 because it is next in line? (doubtful)

How about when you scale this up to 3 subscriptions with priorities: 10, 20, and 30 etc.

TagsNo tags attached.
Commit Version
Fix Due Date

Activities

Paul Hunkar

2012-04-12 22:11

developer   ~0003558

Discussed in F2F Boston.

"When the keep-alive period expires for a Subscription it shall take precedence regardless of its priority, in order to prevent the Subscription from expiring." This text should be removed. The expected behaviour is to just allow the subscription to timeout (both the server and client will detect the timeout without a message).

In addition the server should generate an event that other clients can detect that a subscription timed out and ideally the server should also have a counter that tracks the number of Timeouts that occur.

Nathan Pocock

2012-04-13 18:00

viewer   ~0003572

Based on this proposal it seems that subscription priorities will almost-certainly cause lower-priority subscriptions to never be able to publish their data. Is that right? do we really want that?

Matthias Damm

2012-04-23 16:12

developer   ~0003612

Removed sentence in document "OPC UA Part 4 - Services RC 1.02.16 Specification.doc"

Jim Luth

2012-04-23 16:15

administrator   ~0003613

Reviewed and agreed to change in telecon.

Issue History

Date Modified Username Field Change
2012-04-12 20:48 Nathan Pocock New Issue
2012-04-12 22:11 Paul Hunkar Note Added: 0003558
2012-04-12 22:12 Paul Hunkar Status new => assigned
2012-04-12 22:12 Paul Hunkar Assigned To => Matthias Damm
2012-04-13 18:00 Nathan Pocock Note Added: 0003572
2012-04-23 16:12 Matthias Damm Status assigned => resolved
2012-04-23 16:12 Matthias Damm Resolution open => fixed
2012-04-23 16:12 Matthias Damm Note Added: 0003612
2012-04-23 16:15 Jim Luth Status resolved => closed
2012-04-23 16:15 Jim Luth Note Added: 0003613
2012-04-23 16:15 Jim Luth Fixed in Version => 1.02