Manual:$wgDebugDBTransactions

Database settings: $wgDebugDBTransactions
Enable additional database transaction lifecycle tracing in the debug output.
Introduced in version:1.20.0 (r113487)(Gerrit change 3700; git #cfb8e9a2)
Removed in version:1.27.0 (Gerrit change 243526; git #a88df43d)
Allowed values:(boolean)
Default value:false

Details

edit

This setting enables additional database transaction lifecycle tracing in the debug output:

Transaction state changed from IDLE -> TRANS

Whenever transaction status is changed

IDLE
no database transaction is open
TRANS
a transaction has been open
ERROR
a transaction is in an error state

Example output:

Query trunk (15) (slave): BEGIN
Transaction state changed from IDLE -> TRANS
Query trunk (16) (slave): SELECT /* DatabasePostgres::schemaExists  */  1  
            FROM "pg_catalog"."pg_namespace"  WHERE nspname = 'mediawiki'  LIMIT 1  
Query trunk (17) (slave): SELECT /* DatabasePostgres::getSchemas  */ current_schemas(false)
Schema "mediawiki" already in the search path
Query trunk (18) (slave): COMMIT
Transaction state changed from TRANS -> IDLE

This feature is useful in troubleshooting situations where some operations seem to be ignored (phab:T37572) or whenever 25P02: ERROR: current transaction is aborted, commands ignored until end of transaction block error message is returned (phab:T39172) or where it is necessary to understand what was the transaction progress in case of deferred reference check failure (phab:T60189).

An end-to-end transaction logging may help to pinpoint situations where features like localization cache or deferred updates might interfere with the expected state of the transaction during mainline processing.

See also

edit