https://bugzilla.wikimedia.org/show_bug.cgi?id=58095

       Web browser: ---
            Bug ID: 58095
           Summary: wfWarn should not cause unit tests to fail
           Product: MediaWiki
           Version: 1.23-git
          Hardware: All
                OS: All
            Status: NEW
          Keywords: easy
          Severity: normal
          Priority: Unprioritized
         Component: Logging
          Assignee: wikibugs-l@lists.wikimedia.org
          Reporter: marcin.cies...@gmail.com
    Classification: Unclassified
   Mobile Platform: ---

wfWarn() is called, among others, from Database::rollback where it warns
that there is no transaction to rollback.

Rollback is used already in the error situation; in this case wfWarn exits and
this prevents subsequent printing of the real database error message that
caused the database problem in the first place.

With 4b291909e0e91ad4e8ed98030c1312a872ca3bd4 in place, SQL transactions on
PostgreSQL fail with:


TestORMRowTest::testSaveAndRemove with data set #0 (array('Foobar', '2012-01-01
02:02:02 G
MT', 42, 9000.1, true, array(13, 11, 7, 5, 3, 2), stdClass), true)
DatabasePostgres::reportQueryError: No transaction to rollback, something got
out of sync! [Ca
lled from DatabaseBase::rollback in
/usr/home/saper/test/mytest/includes/db/Database.php at li
ne 3482]

/usr/home/saper/test/mytest/includes/debug/Debug.php:301
/usr/home/saper/test/mytest/includes/debug/Debug.php:157
/usr/home/saper/test/mytest/includes/GlobalFunctions.php:1110
/usr/home/saper/test/mytest/includes/db/Database.php:3482
/usr/home/saper/test/mytest/includes/db/DatabasePostgres.php:510
/usr/home/saper/test/mytest/includes/db/Database.php:1077
/usr/home/saper/test/mytest/includes/db/DatabasePostgres.php:871
/usr/home/saper/test/mytest/includes/db/ORMTable.php:1015
/usr/home/saper/test/mytest/includes/db/ORMRow.php:352
/usr/home/saper/test/mytest/tests/phpunit/includes/db/ORMRowTest.php:143
/usr/home/saper/test/mytest/tests/phpunit/MediaWikiTestCase.php:123
/usr/home/saper/test/mytest/tests/phpunit/MediaWikiPHPUnitCommand.php:80
/usr/home/saper/test/mytest/tests/phpunit/MediaWikiPHPUnitCommand.php:64
/usr/home/saper/test/mytest/tests/phpunit/phpunit.php:119

while the real error should be:

TestORMRowTest::testSaveAndRemove with data set #0 (array('Foobar', '2012-01-01
02:02:02 GM
T', 42, 9000.1, true, array(13, 11, 7, 5, 3, 2), stdClass), true)
DBQueryError: A database error has occurred. Did you forget to run
maintenance/update.php afte
r upgrading?  See:
https://www.mediawiki.org/wiki/Manual:Upgrading#Run_the_update_script
Query: INSERT INTO "orm_test"
(test_id,test_name,test_age,test_height,test_awesome,test_stuff,
test_moarstuff,test_time) VALUES
(NULL,'Foobar','42','9000.1',1,'a:6:{i:0;i:13;i:1;i:11;i:2;i:
7;i:3;i:5;i:4;i:3;i:5;i:2;}','O:8:"stdClass":3:{s:3:"foo";s:3:"bar";s:3:"bar";a:2:{i:0;i:4;i:1
;i:2;}s:3:"baz";b:1;}','2012-01-01 02:02:02 GMT')
Function: ORMTable::insertRow
Error: 23502 ERROR:  null value in column "test_id" violates not-null
constraint

/usr/home/saper/test/mytest/includes/db/Database.php:1111
/usr/home/saper/test/mytest/includes/db/DatabasePostgres.php:511
/usr/home/saper/test/mytest/includes/db/Database.php:1077
/usr/home/saper/test/mytest/includes/db/DatabasePostgres.php:871
/usr/home/saper/test/mytest/includes/db/ORMTable.php:1015
/usr/home/saper/test/mytest/includes/db/ORMRow.php:352
/usr/home/saper/test/mytest/tests/phpunit/includes/db/ORMRowTest.php:143
/usr/home/saper/test/mytest/tests/phpunit/MediaWikiTestCase.php:123
/usr/home/saper/test/mytest/tests/phpunit/MediaWikiPHPUnitCommand.php:80
/usr/home/saper/test/mytest/tests/phpunit/MediaWikiPHPUnitCommand.php:64
/usr/home/saper/test/mytest/tests/phpunit/phpunit.php:119

Warning about transaction not being open is completely irrelevant in this
context.


It causes some less useful error reports like bug 57724.

Reverting 4b291909e0e91ad4e8ed98030c1312a872ca3bd4 restores proper error
reporing and actually fixes ORMTableTest::testIgnoreErrorsOverride and some
others on PostgreSQL.

-- 
You are receiving this mail because:
You are the assignee for the bug.
You are on the CC list for the bug.
_______________________________________________
Wikibugs-l mailing list
Wikibugs-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikibugs-l

Reply via email to