Under certain conditions, the driver UI (DIU UI) get's into a screen called 'Verifying Paddle' and never gets out.
Steps to reproduce:
Start the login process through the UI, entering a driver ID and pass code
Before entering a paddle, go into the system and kill client_supervisor
Wait till client_supervisor respawns
Through the UI, enter a paddle
Under certain conditions, the driver UI (DIU UI) get's into a screen called 'Verifying Paddle' and never gets out.
Steps to reproduce:
* Start the login process through the UI, entering a driver ID and pass code
* Before entering a paddle, go into the system and kill `client_supervisor`
* Wait till `client_supervisor` respawns
* Through the UI, enter a paddle
When client_supervisor restarts, diu_minder also restarts and re-establishes the websocket connection to the UI
The websocket connection is reporting a successful sent message but never getting an 'ok'
Looking at it now, the problem is probably that the _ws_process function is never re-registered to the new websocket when the connection is re-established. I'll have to confirm but this looks like the most likely culprit.
Some other points:
The "verifying" screens should have both a 'cancel' (perhaps after some amount of time) and a timeout so that they don't get into an unrecoverable state
| | |
|---|---|
| priority | high |
| estimate | 2 work units |
Further information:
* When `client_supervisor` restarts, `diu_minder` also restarts and re-establishes the websocket connection to the UI
* The websocket connection is reporting a successful sent message but never getting an 'ok'
Looking at it now, the problem is probably that the `_ws_process` function is never re-registered to the new websocket when the connection is re-established. I'll have to confirm but this looks like the most likely culprit.
Some other points:
* The "verifying" screens should have both a 'cancel' (perhaps after some amount of time) and a timeout so that they don't get into an unrecoverable state
I opted to punt on the 'cancel' and 'verifying timeout'. This can be left for another ticket later.
The major issue was websocket connection, which should resolve the majority of the issue.
As a fall back, the diagnostic screen can be used if it get's stuck. Further, if the UI is stuck, presumably this is for a legitimate reason, so going to other screens won't do much good. In practice this may not be true so it'll be good to give some other fail safes in terms of 'cancel' and timeouts.
I opted to punt on the 'cancel' and 'verifying timeout'. This can be left for another ticket later.
The major issue was websocket connection, which should resolve the majority of the issue.
As a fall back, the diagnostic screen can be used if it get's stuck. Further, if the UI is stuck, presumably this is for a legitimate reason, so going to other screens won't do much good. In practice this may not be true so it'll be good to give some other fail safes in terms of 'cancel' and timeouts.
Under certain conditions, the driver UI (DIU UI) get's into a screen called 'Verifying Paddle' and never gets out.
Steps to reproduce:
client_supervisorclient_supervisorrespawnsFurther information:
client_supervisorrestarts,diu_minderalso restarts and re-establishes the websocket connection to the UILooking at it now, the problem is probably that the
_ws_processfunction is never re-registered to the new websocket when the connection is re-established. I'll have to confirm but this looks like the most likely culprit.Some other points:
I opted to punt on the 'cancel' and 'verifying timeout'. This can be left for another ticket later.
The major issue was websocket connection, which should resolve the majority of the issue.
As a fall back, the diagnostic screen can be used if it get's stuck. Further, if the UI is stuck, presumably this is for a legitimate reason, so going to other screens won't do much good. In practice this may not be true so it'll be good to give some other fail safes in terms of 'cancel' and timeouts.