Skip to content

Fails to unregister server if a device fails to init

If a server fails to init a device (e.g. exception thrown in device_factory), it looks like the db_un_export_server function get an invalid server_name argument.

Tango exception
Severity = ERROR
Error reason = DB_SQLError
Desc : Failed to query TANGO database (error=Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,COERCIBLE) for operation 'like')
.The query was: UPDATE device SET exported=0,stopped=NOW() WHERE server like "���ֆu"
Origin : DataBase::db_un_export_server()

Tango exception
Severity = ERROR
Error reason = API_CommandFailed
Desc : Failed to execute command_inout on device sys/database/2, command DbUnExportServer

The database as the following collation config (which explains the collation error), but I think that "���ֆu" might come from a dangling pointer.

mysql> show variables like "character_set_database";
+------------------------+---------+
| Variable_name          | Value   |
+------------------------+---------+
| character_set_database | utf8mb4 |
+------------------------+---------+
mysql> SHOW FULL COLUMNS FROM device;
+----------+--------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
| Field    | Type         | Collation         | Null | Key | Default | Extra | Privileges                      | Comment |
+----------+--------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
| name     | varchar(255) | latin1_swedish_ci | NO   | MUL | nada    |       | select,insert,update,references |         |
| alias    | varchar(255) | latin1_swedish_ci | YES  |     | NULL    |       | select,insert,update,references |         |
| domain   | varchar(85)  | latin1_swedish_ci | NO   |     | nada    |       | select,insert,update,references |         |
| family   | varchar(85)  | latin1_swedish_ci | NO   |     | nada    |       | select,insert,update,references |         |
| member   | varchar(85)  | latin1_swedish_ci | NO   |     | nada    |       | select,insert,update,references |         |
| exported | int          | NULL              | YES  |     | 0       |       | select,insert,update,references |         |
| ior      | text         | latin1_swedish_ci | YES  |     | NULL    |       | select,insert,update,references |         |
| host     | varchar(255) | latin1_swedish_ci | NO   |     | nada    |       | select,insert,update,references |         |
| server   | varchar(255) | latin1_swedish_ci | NO   |     | nada    |       | select,insert,update,references |         |
| pid      | int          | NULL              | YES  |     | 0       |       | select,insert,update,references |         |
| class    | varchar(255) | latin1_swedish_ci | NO   |     | nada    |       | select,insert,update,references |         |
| version  | varchar(8)   | latin1_swedish_ci | NO   |     | nada    |       | select,insert,update,references |         |
| started  | datetime     | NULL              | YES  |     | NULL    |       | select,insert,update,references |         |
| stopped  | datetime     | NULL              | YES  |     | NULL    |       | select,insert,update,references |         |
| comment  | text         | latin1_swedish_ci | YES  |     | NULL    |       | select,insert,update,references |         |
+----------+--------------+-------------------+------+-----+---------+-------+---------------------------------+---------+