Uploaded image for project: 'ZABBIX BUGS AND ISSUES'
  1. ZABBIX BUGS AND ISSUES
  2. ZBX-1402

Zabbix_server creates deadlocks in transactions

    Details

    • Type: Incident report
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.6.7
    • Fix Version/s: 1.8.7, 1.9.5 (alpha)
    • Component/s: Server (S)
    • Labels:
      None
    • Environment:
      PostgreSQL 8.4, zabbix 1.6.7

      Description

      Today I've noticed something strange in my logs, and digging it up I've found this in my database logs:

      Dec 2 16:26:23 pgdb1 postgres[67695]: [2-1] ERROR: deadlock detected
      Dec 2 16:26:23 pgdb1 postgres[67695]: [2-2] DETAIL: Process 67695 waits for ShareLock on transaction 586724714; blocked by process 67700.
      Dec 2 16:26:23 pgdb1 postgres[67695]: [2-3] Process 67700 waits for ShareLock on transaction 586724679; blocked by process 67695.
      Dec 2 16:26:23 pgdb1 postgres[67695]: [2-4] Process 67695: update ids set nextid=nextid+1 where nodeid=0 and table_name='events' and field_name='eventid'
      Dec 2 16:26:23 pgdb1 postgres[67695]: [2-5] Process 67700: update triggers set value=0,lastchange=1259767486,error='' where triggerid=17086
      Dec 2 16:26:23 pgdb1 postgres[67695]: [2-6] HINT: See server log for query details.
      Dec 2 16:26:23 pgdb1 postgres[67695]: [2-7] STATEMENT: update ids set nextid=nextid+1 where nodeid=0 and table_name='events' and field_name='eventid'
      Dec 2 16:26:23 pgdb1 postgres[67695]: [3-1] ERROR: current transaction is aborted, commands ignored until end of transaction block
      Dec 2 16:26:23 pgdb1 postgres[67695]: [3-2] STATEMENT: select nextid from ids where nodeid=0 and table_name='events' and field_name='eventid'
      Dec 2 16:26:23 pgdb1 postgres[67695]: [4-1] ERROR: current transaction is aborted, commands ignored until end of transaction block
      Dec 2 16:26:23 pgdb1 postgres[67695]: [4-2] STATEMENT: select nextid from ids where nodeid=0 and table_name='events' and field_name='eventid'
      Dec 2 16:26:23 pgdb1 postgres[67695]: [5-1] ERROR: current transaction is aborted, commands ignored until end of transaction block

      Two processes of zabbix implied colliding locks, creating a deadlock by this. I know it's a nontrivial case with such a multithreaded daemon, but couldn't something be done to avoid such situations?

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                phoemix Gergely Czuczy
              • Votes:
                4 Vote for this issue
                Watchers:
                7 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: