There's a timeout, a disconnection is triggered, but then the client gets into STANDOFF state, and it should reconnect after the "connection lost" was received.
The problem is easily identified in the code:
- AQ.disconnect() is called on timeout, it calls self.client.disconnect() (which does a transport.loseConnection) and puts self.client in None.
- After a while, the AQProtocol.connectionLost() is called, which does AQ.connectionLost(), but this check if self.client is None, and does *not* generates the SYS_CONNECTION_LOST, so the SD gets stuck in STANDOFF.
The problem is identified in the following lines:
2009-11-24 16:03:54,641 - ubuntuone. SyncDaemon. EQ - DEBUG - push_event: SYS_HANDSHAKE_ TIMEOUT, args:(), kw:{} SyncDaemon. ActionQueue - DEBUG - disconnected SyncDaemon. State - DEBUG - START_AUTHENTIC ATING_WITH_ BOTHQ --[SYS_ HANDSHAKE_ TIMEOUT] --> START_STANDOFF_ WAITING_ WITH_NETWORK_ WITH_BOTHQ SyncDaemon. EQ - DEBUG - push_event: SYS_STATE_CHANGED, args:(), kw:{'state': <SyncDaemonState START_STANDOFF_ WAITING_ WITH_NETWORK_ WITH_BOTHQ> } SyncDaemon. ActionQueue - WARNING - connection lost: Connection was closed cleanly. SyncDaemon. Main - NOTE - ---- MARK (state: START_STANDOFF_ WAITING_ WITH_NETWORK_ WITH_BOTHQ; queues: metadata: 13490; content: 6065; hash: 0, fsm-cache: hit=489656 miss=73594) ----
2009-11-24 16:03:54,641 - ubuntuone.
2009-11-24 16:03:54,641 - ubuntuone.
2009-11-24 16:03:54,642 - ubuntuone.
2009-11-24 16:03:54,642 - ubuntuone.
2009-11-24 16:04:49,087 - ubuntuone.
There's a timeout, a disconnection is triggered, but then the client gets into STANDOFF state, and it should reconnect after the "connection lost" was received.
The problem is easily identified in the code:
- AQ.disconnect() is called on timeout, it calls self.client. disconnect( ) (which does a transport. loseConnection) and puts self.client in None.
- After a while, the AQProtocol. connectionLost( ) is called, which does AQ.connectionLo st(), but this check if self.client is None, and does *not* generates the SYS_CONNECTION_ LOST, so the SD gets stuck in STANDOFF.