View Issue Details

IDProjectCategoryView StatusLast Update
000004910000-004: Servicespublic2006-12-12 17:47
ReporterMatthias Damm Assigned ToMatthias Damm  
PriorityhighSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Summary0000049: Timeouts for service calls
Description

Hello All,
at our Portland meeting in September we discussed for some time how to handle timeouts.

The minutes summarize this as follows:

Discussion about Timeout:

  • Started with timeout for synchronous API calls
  • Progressed to service calls potentially taking a long time like HistoryRead and Query.
    Result:
    Add Timeout in RequestHeader in Part 4(Action - Matthias)
  • gives the server a hint how long the client will wait before canceling, can also be used in client API

Since then I haven't seen or heard anything about this change.

Adding a timeout parameter is easy. However, there is behavior associated with this parameter that has to be described. E.g.,:

  • relative or absolute timeout
  • can server ignore it
  • what if data are immediately available but the request is already timed out when arriving in the server
  • correlation between timeout parameter in stack and timeout in stack API (recommended tolerance)
  • profilable feature? It is extra work - why bother if every request can immediately be fulfilled (in a device)
  • is all of this in Part 4 or some text also in Part 6 (does the stack on client-side handle the timeout?)

I propose this as a topic for one of the upcoming telecons.

Regards,
Karl

TagsNo tags attached.
Commit Version
Fix Due Date

Activities

user2

2006-10-24 17:02

  ~0000012

Discussed in 2006-10-24 telecon:

Parameter should be named "TimeoutHint" (milliseconds duration)

if server detects the timeout the service returns the BAD_TIMEOUT error code (already defined)

Adding a timeout parameter is easy. However, there is behavior associated with this parameter that has to be described. E.g.,:

  • relative or absolute timeout
    relative - if server takes 2X the timout server can be sure the client is gone

  • can server ignore it
    yes

  • what if data are immediately available but the request is already timed out when arriving in the server
    server can ignore the timeout

  • correlation between timeout parameter in stack and timeout in stack API (recommended tolerance)
    Client sets the timeout on a per-call basis

  • profilable feature? It is extra work - why bother if every request can immediately be fulfilled (in a device)
    server can ignore

  • is all of this in Part 4 or some text also in Part 6 (does the stack on client-side handle the timeout?)
    new text for both part 4 and part 6

Randy and Mathias will updated versions of Part 4 and 6 for review at the Cleveland meeting next month.

Matthias Damm

2006-11-13 20:06

developer   ~0000028

Fixed in document
OPC UA Part 4 - Services 1.01 Specification_V1.doc

Added the following parameter to RequestHeader:
Name: timeoutHint
Type: Duration
Description:
This timeout is used in the Client side Communication Stack to set the timeout on a per-call base.
For a Server this timeout is only a hint and can be used to cancel long running operations to free resources. If the Server detects a timeout, he can cancel the operation by sending the Service result Bad_Timeout. The Server should wait two times the timeout after he received the request before cancelling the operation.

user2

2006-12-12 17:47

  ~0000073

Reviewed changes in a telecon prior to 2006-12-12

Issue History

Date Modified Username Field Change
2006-10-24 12:11 Matthias Damm New Issue
2006-10-24 12:11 Matthias Damm Status new => assigned
2006-10-24 12:11 Matthias Damm Assigned To => Matthias Damm
2006-10-24 17:02 user2 Note Added: 0000012
2006-11-13 20:06 Matthias Damm Status assigned => resolved
2006-11-13 20:06 Matthias Damm Resolution open => fixed
2006-11-13 20:06 Matthias Damm Note Added: 0000028
2006-12-12 17:47 user2 Status resolved => closed
2006-12-12 17:47 user2 Note Added: 0000073