[
https://issues.apache.org/jira/browse/PLC4X-257?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Łukasz Dywicki closed PLC4X-257.
--------------------------------
Resolution: Duplicate
Resolution is part of PLC4x-207.
> Timedout operations can hang communication
> ------------------------------------------
>
> Key: PLC4X-257
> URL: https://issues.apache.org/jira/browse/PLC4X-257
> Project: Apache PLC4X
> Issue Type: Bug
> Components: Core
> Affects Versions: 0.8.0
> Reporter: Łukasz Dywicki
> Priority: Major
>
> Currently timed out reply handler registrations are removed. However their
> {{onTimeout}} consumer does not gets called resulting in hanged transaction
> which will never complete cause call of {{transaction.endRequest()}} will
> never happen. SocketCAN transport does not have direct support for timeouts,
> some messages just come later than expected due to bus arbitration process.
> Not sure if same is case for IP based communication. Reproduction procedure
> is rather straight - launch sample program going to s7 simulator and hold
> read longer than configured timeout.
> Faulty code:
> {code:lang=java|title=Modifications to Plc4xNettyWrapper}
> // Timeout?
> if (registration.getTimeout().isBefore(Instant.now())) {
> logger.debug("Removing {} as its timed out (was set till {})",
> registration, registration.getTimeout());
> + // pass timeout back to handler so it can do ie. transaction
> compensation
> + registration.getOnTimeoutConsumer().accept(new TimeoutException());
> iter.remove();
> continue;
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)