[ 
https://issues.apache.org/jira/browse/PLC4X-342?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Łukasz Dywicki updated PLC4X-342:
---------------------------------
    Description: 
While test of OPC UA simulator coming from freeopcua I found out that our 
client doesn't work with it. Maybe it is an issue of how they encode payload, 
maybe it is inconsistency in the spec, not sure - the end result is that actual 
response processing error gets swallowed and driver hangs.

Guilty code is in {{OpcuaSubscriptionHandle}}:
{code:java}
for (MonitoredItemCreateResult result : 
responseMessage.getResults().toArray(new MonitoredItemCreateResult[0])) {
    if (OpcuaStatusCode.enumForValue(result.getStatusCode().getStatusCode()) != 
OpcuaStatusCode.Good) {
        LOGGER.error("Invalid Field {}, subscription created without this 
field", fieldNames.get((int) result.getMonitoredItemId()));
    } else {
        LOGGER.debug("Field {} was added to the subscription", 
fieldNames.get((int) result.getMonitoredItemId() - 1)); // !monitored item id 
might be inconsistent!
    }
}
{code}

Copy of traffic causing issue in attachment.

  was:
While test of OPC UA simulator coming from freeopcua I found out that our 
client doesn't work with it. Maybe it is an issue of how they encode payload, 
maybe it is inconsistency in the spec, not sure - the end result is that actual 
response processing error gets swallowed and driver hangs.

Guilty code is in {{OpcuaSubscriptionHandle}}:
{code}
for (MonitoredItemCreateResult result : 
responseMessage.getResults().toArray(new MonitoredItemCreateResult[0])) {
    if (OpcuaStatusCode.enumForValue(result.getStatusCode().getStatusCode()) != 
OpcuaStatusCode.Good) {
        LOGGER.error("Invalid Field {}, subscription created without this 
field", fieldNames.get((int) result.getMonitoredItemId()));
    } else {
        LOGGER.debug("Field {} was added to the subscription", 
fieldNames.get((int) result.getMonitoredItemId() - 1)); // !monitored item id 
might be inconsistent!
    }
}
{/code}

Copy of traffic causing issue in attachment.


> OPC UA silently fails to handle subscription response
> -----------------------------------------------------
>
>                 Key: PLC4X-342
>                 URL: https://issues.apache.org/jira/browse/PLC4X-342
>             Project: Apache PLC4X
>          Issue Type: Bug
>          Components: Driver-OPC-UA
>    Affects Versions: 0.9.1
>            Reporter: Łukasz Dywicki
>            Assignee: Ben Hutcheson
>            Priority: Major
>         Attachments: opcua_monitored_item_wrong_index..pcapng
>
>
> While test of OPC UA simulator coming from freeopcua I found out that our 
> client doesn't work with it. Maybe it is an issue of how they encode payload, 
> maybe it is inconsistency in the spec, not sure - the end result is that 
> actual response processing error gets swallowed and driver hangs.
> Guilty code is in {{OpcuaSubscriptionHandle}}:
> {code:java}
> for (MonitoredItemCreateResult result : 
> responseMessage.getResults().toArray(new MonitoredItemCreateResult[0])) {
>     if (OpcuaStatusCode.enumForValue(result.getStatusCode().getStatusCode()) 
> != OpcuaStatusCode.Good) {
>         LOGGER.error("Invalid Field {}, subscription created without this 
> field", fieldNames.get((int) result.getMonitoredItemId()));
>     } else {
>         LOGGER.debug("Field {} was added to the subscription", 
> fieldNames.get((int) result.getMonitoredItemId() - 1)); // !monitored item id 
> might be inconsistent!
>     }
> }
> {code}
> Copy of traffic causing issue in attachment.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to