Currently, as a node server goes about its business, messages it sends to the ISY are sent using the default timeout values -- which is somewhere in the 5 minute range.
If all is going well, or if there are only occasional network "hiccups", this is of no matter -- once in a while, node server to ISY messages may queue up for 5 minutes until a failed call to the ISY finally times out, at which point the queue of messages is (usually) processed quickly, and things "catch up".
However, there may be cases where a more aggressive timeout makes sense. If many messages get lost (perhaps a poor wifi connection?), then it would be desirable to quickly timeout and get to the next message so that we don't end up with huge queues of unsent messages stacking up. This would imply a global timeout setting for polyglot in general would be desirable for timeouts. Alternatively, this might imply that the default timeout for Polyglot be proactively changed to a more aggressive value - perhaps 60 or 90 seconds may make more sense?
It is also possible for an individual node server to desire more aggressive timeouts. For example, if a monitored value is changing rapidly (perhaps it changes every 3 or 5 seconds), then it might be desirable to set a very short timeout (perhaps as small as a few seconds), on the presumption that it's far better to drop a few status updates than to end up many minutes behind on updates of this rapidly-changing value.
So, this issue is requesting input from node server authors on how they would like to control timeouts:
a) leave it as is, the correct solution is to have the user fix their network!
b) change the timeout to "fill-in-the-blank" seconds globally, and then see (a) above.
c) create a node-server-level timeout setting scoped to all ISY calls for a given node server, that allows the node server author to set the timeouts.
d) implement (c) above, and provide another per-driver (and per-command) list of timeouts so that the node server author can control timeouts down to the granularity of each network operation.
e) implement (d) above, and provide a means for a timeout to be reported to the node server, so that the node server author can implement their own network error detection and retry mechanism down to the granularity of each network operation
Thoughts? Comments?
Currently, as a node server goes about its business, messages it sends to the ISY are sent using the default timeout values -- which is somewhere in the 5 minute range.
If all is going well, or if there are only occasional network "hiccups", this is of no matter -- once in a while, node server to ISY messages may queue up for 5 minutes until a failed call to the ISY finally times out, at which point the queue of messages is (usually) processed quickly, and things "catch up".
However, there may be cases where a more aggressive timeout makes sense. If many messages get lost (perhaps a poor wifi connection?), then it would be desirable to quickly timeout and get to the next message so that we don't end up with huge queues of unsent messages stacking up. This would imply a global timeout setting for polyglot in general would be desirable for timeouts. Alternatively, this might imply that the default timeout for Polyglot be proactively changed to a more aggressive value - perhaps 60 or 90 seconds may make more sense?
It is also possible for an individual node server to desire more aggressive timeouts. For example, if a monitored value is changing rapidly (perhaps it changes every 3 or 5 seconds), then it might be desirable to set a very short timeout (perhaps as small as a few seconds), on the presumption that it's far better to drop a few status updates than to end up many minutes behind on updates of this rapidly-changing value.
So, this issue is requesting input from node server authors on how they would like to control timeouts:
a) leave it as is, the correct solution is to have the user fix their network!
b) change the timeout to "fill-in-the-blank" seconds globally, and then see (a) above.
c) create a node-server-level timeout setting scoped to all ISY calls for a given node server, that allows the node server author to set the timeouts.
d) implement (c) above, and provide another per-driver (and per-command) list of timeouts so that the node server author can control timeouts down to the granularity of each network operation.
e) implement (d) above, and provide a means for a timeout to be reported to the node server, so that the node server author can implement their own network error detection and retry mechanism down to the granularity of each network operation
Thoughts? Comments?