It appears that currently Zabbix does not check the default transaction isolation level and does not handle serialization failures that occur at isolation levels above read committed. This causes some write transactions to fail. For example, the frontend probably cannot save sessions on dynamically updated pages, resulting in guest login errors and further logout. Errors also occur when updating records from the server and proxy side.
Steps to reproduce:
Errors are not reproduced on MySQL, so I believe that they are related to Postgres only.
- Set Postgres database transaction isolation level to repeatable read.
- Log in to Zabbix and open dashboard and latest data tabs.
Guest login errors appear in the audit log, after a while the user logs out.
Databases can be deployed with a default isolation level of repeatable read or serializable. This setting must be checked when using Postgres, otherwise it can lead to a lot of implicit errors that are not properly handled on the application side.
- There should be warnings on the front about the Postgres database default transaction isolation level higher than read committed.
- The requirements for the transaction isolation level should be specified in the documentation.