"The client was disconnected by the server because of inactivity" error when using some buggy versions of MySQL library
Some Tango users in our institute encountered the following error reported by the Tango Database server:
server_started_date = Database().get_device_info(self.__tg_url).started_date
PyTango.DevFailed: DevFailed[
DevError[
desc = Failed to query TANGO database (error=The client was disconnected by the server because of inactivity. See wait_timeout and interactive_timeout for configuring this behavior.)
The query was: SELECT exported,ior,version,pid,server,host,started,stopped,class FROM device WHERE name = 'sys/tg_test/1' or alias = 'sys/tg_test/1';
origin = DataBase::db_get_device_info()
reason = DB_SQLError
severity = ERR]
DevError[
desc = Failed to execute command_inout on device sys/database/2, command DbGetDeviceInfo
origin = Connection::command_inout()
reason = API_CommandFailed
severity = ERR]
]
It seems that this is linked to a bug in the MySQL client library. See :
It would be useful to detect the MySQL library version used and to inform our users if a buggy version of this MySQL Client library is detected.
A check could be added during the CMake configuration step but it would be good to do a check at run time too because it could happen that the Database DS is compiled with a good version of the MySQL client library but another one (binary compatible) could be used at run time.
Of course, a workaround is also to set the wait_timeout (and interactive_timeout?) to huge values to avoid the need to reconnect.