Mosquitto: Client already connected, closing old connection
After some time (few days) mosquitto gets into state, when it constantly use nearly 100% of CPU, while spamming system log with a load of following messages:
Feb 9 23:53:25 mox-ap mosquitto[3182]: 1644450805: Client 0000000AAAAAAAAA->0000000BBBBBBBBB already connected, closing old connection.
Feb 9 23:53:25 mox-ap mosquitto[3182]: 1644450805: Client 0000000AAAAAAAAA->0000000BBBBBBBBB already connected, closing old connection.
Feb 9 23:53:25 mox-ap mosquitto[3182]: 1644450805: Client 0000000AAAAAAAAA->0000000BBBBBBBBB already connected, closing old connection.
[...] # repeated many times
0000000AAAAAAAAA is serial of Mox, 0000000BBBBBBBBB is serial of Omnia
This will make reForis or any foris client unusable because it cannot pass messages to foris-controller - even though it is running.
For example:
root@mox-ap:~# foris-client-wrapper -m about -a get
WARNING:foris_client.buses.mqtt:Message hasn't reached controller trying to resend 'foris-controller/0000000D3000404D/request/about/action/get'
Traceback (most recent call last):
File "/usr/lib/python3.7/site-packages/foris_client/buses/mqtt.py", line 358, in send
File "/usr/lib/python3.7/queue.py", line 178, in get
_queue.Empty
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/bin/foris-client", line 11, in <module>
load_entry_point('foris-client==1.0.3', 'console_scripts', 'foris-client')()
File "/usr/lib/python3.7/site-packages/foris_client/client/__main__.py", line 177, in main
File "/usr/lib/python3.7/site-packages/foris_client/buses/mqtt.py", line 360, in send
File "/usr/lib/python3.7/site-packages/foris_client/buses/mqtt.py", line 337, in check_controllers
foris_client.buses.base.ControllerMissing: Connection to controller 0000000AAAAAAAAA is lost.
How to reproduce
Turris Mox + Omnia, Turris OS 5.3.5 on both
- Setup CA on Mox + Enable Remote Access
- Create Access Token on Mox + export it
- Add new subordinate on Omnia with exported token
- Wait several days...