View Issue Details

IDProjectCategoryView StatusLast Update
000224110000-004: Servicespublic2013-12-03 17:17
ReporterRandy Armstrong Assigned ToMatthias Damm  
PrioritynormalSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Fixed in Version1.03 
Summary0002241: EventFilters must not be rejected because of Invalid BrowsePaths
Description

An AggregatingServer will often know of events that an underlying Servers does not. This means an EventFilter on the Server object may references these event fields in the Select or Where clauses.

This creates a problem if the filter is passed to the underlying server and the underlying server rejects it. The only work around would be for the aggregator to read the available events types and construct a different filter that can accepted by the underlying server and develop complex logic to map between the filters.

It makes more sense to change the specification to say that Servers shall not reject AttributeOperands or SimpleAttributeOperands because the TypeDefinitionId or BrowsePath are not known to the Server. These fields shall be treated as fields which never match.

The current text in 7.16.3 says:

Any errors which are true for all possible Events are returned in the selectClauseResults parameter described in Table 133.

This is the phrase that needs clarifying.

TagsNo tags attached.
Commit Version
Fix Due Date

Activities

Paul Hunkar

2012-10-25 03:56

developer   ~0004175

I don't think you can just pass the event filter to the aggregated server as is in any case - the namespace associated with the items in the filter may be wrong. I'm assumming that the Aggregating server has a merged type system and the filter that was constructed was based on this merged type system. So as a minimum the selectClause and whereFilter must be processed for namespace translations.

Part 4 already describes the correct behaviour for the operands in the content filter description - in that they return a false (see Table 111 - Complex filterOperand definition)

The selectclause also correctly describes that a NULL is returned for any field that do not exist in an event that passes the filter.

So the issue is 7.16.3 EventFilter definition, where it allows a server to return an error regarding the selectClause if the error is true for all possible Events. The same statement applies to whereClause - i.e. all possible Events.

I would think that aggregating server must process both the selectClause and whereClause in any case to verify namespace Ids - would it be that hard to omit select item that do not exist in the aggregated server? As to whereClause items, it may be difficult to update a filter, but I would think that this is what the aggregating server must do in any case. Any whereCluase item that is not available in the server is just replaced with a "false" where it is referenced I would think only OfType could have a problem, so it is relativly quick to parse the event filter and verify that the typeid in an OfType exist in the Aggregated server, if not then updated filter to have a false in that given row.

Randy Armstrong

2012-10-25 05:40

administrator   ~0004186

Converting from local to remote namespace indexes is trivial and does not require that the filter be analyzed. Missing namespace URIs can be converted to 65535 and the aggregating server can handle them easily returning no match.

The merged type system may exist - but each aggregated server only supports a subset and it is not easy to determine which subset is supported - this is the problem that needs solving.

A potential resolution is a two stage approach:

The aggregator tries twice: once with the mapped filter - if it is rejected the clauses which cause the error are 'zeroed out' and it tries again.

zeroed out means they are set to a valid field that is likely to always be null.

we should recommend and field in the specification.

Jim Luth

2012-11-06 18:55

administrator   ~0004212

Randy will work with Paul to propose a viable solution.

Matthias Damm

2013-08-20 17:06

developer   ~0004941

Need input from Paul and Randy - can be a topic for the next face to face meeting.

Matthias Damm

2013-10-08 17:03

developer   ~0005040

Added the following clarification to 7.16.3 EventFilter:
Some Servers, like aggregating Servers, may not know all possible EventTypes at the time the EventFilter is set. These Servers do not return errors for unknown EventTypes or BrowsePaths.

Resolved in document IEC 62541-4 - Services [Pre-CDV] 1.02.06.doc

Jim Luth

2013-12-03 17:17

administrator   ~0005162

Reviewed and agreed to clarified text.

Issue History

Date Modified Username Field Change
2012-10-25 00:40 Randy Armstrong New Issue
2012-10-25 03:56 Paul Hunkar Note Added: 0004175
2012-10-25 05:40 Randy Armstrong Note Added: 0004186
2012-11-06 18:54 Jim Luth Status new => assigned
2012-11-06 18:54 Jim Luth Assigned To => Randy Armstrong
2012-11-06 18:55 Jim Luth Note Added: 0004212
2013-08-20 17:05 Matthias Damm Assigned To Randy Armstrong => Matthias Damm
2013-08-20 17:06 Matthias Damm Note Added: 0004941
2013-08-20 17:06 Matthias Damm Status assigned => feedback
2013-10-08 17:03 Matthias Damm Status feedback => resolved
2013-10-08 17:03 Matthias Damm Resolution open => fixed
2013-10-08 17:03 Matthias Damm Note Added: 0005040
2013-12-03 17:17 Jim Luth Status resolved => closed
2013-12-03 17:17 Jim Luth Note Added: 0005162
2013-12-03 17:17 Jim Luth Fixed in Version => 1.03