View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002241 | 10000-004: Services | public | 2012-10-25 00:40 | 2013-12-03 17:17 | |
Reporter | Randy Armstrong | Assigned To | Matthias Damm | ||
Priority | normal | Severity | major | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Fixed in Version | 1.03 | ||||
Summary | 0002241: 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. | ||||
Tags | No tags attached. | ||||
Commit Version | |||||
Fix Due Date | |||||
|
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. |
|
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. |
|
Randy will work with Paul to propose a viable solution. |
|
Need input from Paul and Randy - can be a topic for the next face to face meeting. |
|
Added the following clarification to 7.16.3 EventFilter: Resolved in document IEC 62541-4 - Services [Pre-CDV] 1.02.06.doc |
|
Reviewed and agreed to clarified text. |
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 |