Page MenuHomePhabricator

Fix broken DatabasePostgresTest cases that emit db error
Closed, ResolvedPublic

Description

On every build, and has been for many months. Seen through the mw-dberror.log artefact.

These are either:

  • expected failures in the source but not silent in the logs (e.g. silent flag in IDatabase)
  • expected failures in the test but not nulled in the test (e.g. setNullLogger).
  • unexpected failures that need the test or source to be fixed.
dberrors
Tue Jul 28 20:35:54 UTC 2020	0e2c382fa962	postgres-unittest_	Error 23505 from DatabasePostgresTest::doTestInsertIgnore, ERROR:  duplicate key value violates unique constraint "unittest_foo_pkey"
DETAIL:  Key (i)=(2) already exists.
 INSERT INTO "unittest_foo" (i) VALUES ((2)) /workspace/db/quibble-postgres-i8t02bo5/socket
#0 /workspace/src/includes/libs/rdbms/database/Database.php(1654): Wikimedia\Rdbms\Database->getQueryExceptionAndLog(string, string, string, string)
#1 /workspace/src/includes/libs/rdbms/database/Database.php(1227): Wikimedia\Rdbms\Database->reportQueryError(string, string, string, string, boolean)
#2 /workspace/src/includes/libs/rdbms/database/DatabasePostgres.php(578): Wikimedia\Rdbms\Database->query(string, string, integer)
#3 /workspace/src/includes/libs/rdbms/database/Database.php(2317): Wikimedia\Rdbms\DatabasePostgres->doInsertNonConflicting(string, array, string)
#4 /workspace/src/tests/phpunit/integration/includes/db/DatabasePostgresTest.php(32): Wikimedia\Rdbms\Database->insert(string, array, string, array)
#5 /workspace/src/tests/phpunit/integration/includes/db/DatabasePostgresTest.php(76): DatabasePostgresTest->doTestInsertIgnore()
#6 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(1415): DatabasePostgresTest->testInsertIgnoreOld()
#7 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(1035): PHPUnit\Framework\TestCase->runTest()
#8 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestResult.php(691): PHPUnit\Framework\TestCase->runBare()
#9 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(763): PHPUnit\Framework\TestResult->run(DatabasePostgresTest)
#10 /workspace/src/tests/phpunit/MediaWikiIntegrationTestCase.php(446): PHPUnit\Framework\TestCase->run(PHPUnit\Framework\TestResult)
#11 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): MediaWikiIntegrationTestCase->run(PHPUnit\Framework\TestResult)
#12 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#13 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#14 /workspace/src/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(627): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#15 /workspace/src/vendor/phpunit/phpunit/src/TextUI/Command.php(204): PHPUnit\TextUI\TestRunner->doRun(PHPUnit\Framework\TestSuite, array, array, boolean)
#16 /workspace/src/tests/phpunit/phpunit.php(75): PHPUnit\TextUI\Command->run(array, boolean)
#17 /workspace/src/maintenance/doMaintenance.php(107): PHPUnitMaintClass->execute()
#18 /workspace/src/tests/phpunit/phpunit.php(134): require(string)
#19 {main}
Tue Jul 28 20:35:54 UTC 2020	0e2c382fa962	postgres-unittest_	Error 23502 from DatabasePostgresTest::doTestInsertIgnore, ERROR:  null value in column "i" violates not-null constraint
DETAIL:  Failing row contains (null).
 INSERT INTO "unittest_foo" (i) VALUES ((NULL)) /workspace/db/quibble-postgres-i8t02bo5/socket
#0 /workspace/src/includes/libs/rdbms/database/Database.php(1654): Wikimedia\Rdbms\Database->getQueryExceptionAndLog(string, string, string, string)
#1 /workspace/src/includes/libs/rdbms/database/Database.php(1227): Wikimedia\Rdbms\Database->reportQueryError(string, string, string, string, boolean)
#2 /workspace/src/includes/libs/rdbms/database/DatabasePostgres.php(578): Wikimedia\Rdbms\Database->query(string, string, integer)
#3 /workspace/src/includes/libs/rdbms/database/Database.php(2317): Wikimedia\Rdbms\DatabasePostgres->doInsertNonConflicting(string, array, string)
#4 /workspace/src/tests/phpunit/integration/includes/db/DatabasePostgresTest.php(46): Wikimedia\Rdbms\Database->insert(string, array, string, array)
#5 /workspace/src/tests/phpunit/integration/includes/db/DatabasePostgresTest.php(76): DatabasePostgresTest->doTestInsertIgnore()
#6 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(1415): DatabasePostgresTest->testInsertIgnoreOld()
#7 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(1035): PHPUnit\Framework\TestCase->runTest()
#8 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestResult.php(691): PHPUnit\Framework\TestCase->runBare()
#9 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(763): PHPUnit\Framework\TestResult->run(DatabasePostgresTest)
#10 /workspace/src/tests/phpunit/MediaWikiIntegrationTestCase.php(446): PHPUnit\Framework\TestCase->run(PHPUnit\Framework\TestResult)
#11 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): MediaWikiIntegrationTestCase->run(PHPUnit\Framework\TestResult)
#12 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#13 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#14 /workspace/src/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(627): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#15 /workspace/src/vendor/phpunit/phpunit/src/TextUI/Command.php(204): PHPUnit\TextUI\TestRunner->doRun(PHPUnit\Framework\TestSuite, array, array, boolean)
#16 /workspace/src/tests/phpunit/phpunit.php(75): PHPUnit\TextUI\Command->run(array, boolean)
#17 /workspace/src/maintenance/doMaintenance.php(107): PHPUnitMaintClass->execute()
#18 /workspace/src/tests/phpunit/phpunit.php(134): require(string)
#19 {main}
Tue Jul 28 20:35:54 UTC 2020	0e2c382fa962	postgres-unittest_	Error 23502 from DatabasePostgresTest::doTestInsertIgnore, ERROR:  null value in column "i" violates not-null constraint
DETAIL:  Failing row contains (null).
 INSERT INTO "unittest_foo" (i) VALUES (7),(NULL) ON CONFLICT DO NOTHING /workspace/db/quibble-postgres-i8t02bo5/socket
#0 /workspace/src/includes/libs/rdbms/database/Database.php(1654): Wikimedia\Rdbms\Database->getQueryExceptionAndLog(string, string, string, string)
#1 /workspace/src/includes/libs/rdbms/database/Database.php(1227): Wikimedia\Rdbms\Database->reportQueryError(string, string, string, string, boolean)
#2 /workspace/src/includes/libs/rdbms/database/Database.php(2357): Wikimedia\Rdbms\Database->query(string, string, integer)
#3 /workspace/src/includes/libs/rdbms/database/DatabasePostgres.php(562): Wikimedia\Rdbms\Database->doInsertNonConflicting(string, array, string)
#4 /workspace/src/includes/libs/rdbms/database/Database.php(2317): Wikimedia\Rdbms\DatabasePostgres->doInsertNonConflicting(string, array, string)
#5 /workspace/src/tests/phpunit/integration/includes/db/DatabasePostgresTest.php(46): Wikimedia\Rdbms\Database->insert(string, array, string, array)
#6 /workspace/src/tests/phpunit/integration/includes/db/DatabasePostgresTest.php(94): DatabasePostgresTest->doTestInsertIgnore()
#7 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(1415): DatabasePostgresTest->testInsertIgnoreNew()
#8 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(1035): PHPUnit\Framework\TestCase->runTest()
#9 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestResult.php(691): PHPUnit\Framework\TestCase->runBare()
#10 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(763): PHPUnit\Framework\TestResult->run(DatabasePostgresTest)
#11 /workspace/src/tests/phpunit/MediaWikiIntegrationTestCase.php(446): PHPUnit\Framework\TestCase->run(PHPUnit\Framework\TestResult)
#12 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): MediaWikiIntegrationTestCase->run(PHPUnit\Framework\TestResult)
#13 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#14 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#15 /workspace/src/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(627): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#16 /workspace/src/vendor/phpunit/phpunit/src/TextUI/Command.php(204): PHPUnit\TextUI\TestRunner->doRun(PHPUnit\Framework\TestSuite, array, array, boolean)
#17 /workspace/src/tests/phpunit/phpunit.php(75): PHPUnit\TextUI\Command->run(array, boolean)
#18 /workspace/src/maintenance/doMaintenance.php(107): PHPUnitMaintClass->execute()
#19 /workspace/src/tests/phpunit/phpunit.php(134): require(string)
#20 {main}
Tue Jul 28 20:35:54 UTC 2020	0e2c382fa962	postgres-unittest_	Error 23505 from DatabasePostgresTest::doTestInsertSelectIgnore, ERROR:  duplicate key value violates unique constraint "unittest_bar_pkey"
DETAIL:  Key (i)=(2) already exists.
 INSERT INTO "unittest_bar" (i) VALUES (('2')) /workspace/db/quibble-postgres-i8t02bo5/socket
#0 /workspace/src/includes/libs/rdbms/database/Database.php(1654): Wikimedia\Rdbms\Database->getQueryExceptionAndLog(string, string, string, string)
#1 /workspace/src/includes/libs/rdbms/database/Database.php(1227): Wikimedia\Rdbms\Database->reportQueryError(string, string, string, string, boolean)
#2 /workspace/src/includes/libs/rdbms/database/DatabasePostgres.php(578): Wikimedia\Rdbms\Database->query(string, string, integer)
#3 /workspace/src/includes/libs/rdbms/database/Database.php(2317): Wikimedia\Rdbms\DatabasePostgres->doInsertNonConflicting(string, array, string)
#4 /workspace/src/includes/libs/rdbms/database/Database.php(3562): Wikimedia\Rdbms\Database->insert(string, array, string, array)
#5 /workspace/src/includes/libs/rdbms/database/DatabasePostgres.php(657): Wikimedia\Rdbms\Database->doInsertSelectGeneric(string, string, array, array, string, array, array, array)
#6 /workspace/src/includes/libs/rdbms/database/Database.php(3480): Wikimedia\Rdbms\DatabasePostgres->doInsertSelectNative(string, string, array, array, string, array, array, array)
#7 /workspace/src/tests/phpunit/integration/includes/db/DatabasePostgresTest.php(120): Wikimedia\Rdbms\Database->insertSelect(string, string, array, array, string, array)
#8 /workspace/src/tests/phpunit/integration/includes/db/DatabasePostgresTest.php(162): DatabasePostgresTest->doTestInsertSelectIgnore()
#9 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(1415): DatabasePostgresTest->testInsertSelectIgnoreOld()
#10 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(1035): PHPUnit\Framework\TestCase->runTest()
#11 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestResult.php(691): PHPUnit\Framework\TestCase->runBare()
#12 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(763): PHPUnit\Framework\TestResult->run(DatabasePostgresTest)
#13 /workspace/src/tests/phpunit/MediaWikiIntegrationTestCase.php(446): PHPUnit\Framework\TestCase->run(PHPUnit\Framework\TestResult)
#14 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): MediaWikiIntegrationTestCase->run(PHPUnit\Framework\TestResult)
#15 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#16 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#17 /workspace/src/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(627): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#18 /workspace/src/vendor/phpunit/phpunit/src/TextUI/Command.php(204): PHPUnit\TextUI\TestRunner->doRun(PHPUnit\Framework\TestSuite, array, array, boolean)
#19 /workspace/src/tests/phpunit/phpunit.php(75): PHPUnit\TextUI\Command->run(array, boolean)
#20 /workspace/src/maintenance/doMaintenance.php(107): PHPUnitMaintClass->execute()
#21 /workspace/src/tests/phpunit/phpunit.php(134): require(string)
#22 {main}
Tue Jul 28 20:35:54 UTC 2020	0e2c382fa962	postgres-unittest_	Error 23502 from DatabasePostgresTest::doTestInsertSelectIgnore, ERROR:  null value in column "i" violates not-null constraint
DETAIL:  Failing row contains (null).
 INSERT INTO "unittest_bar" (i) VALUES ((NULL)) /workspace/db/quibble-postgres-i8t02bo5/socket
#0 /workspace/src/includes/libs/rdbms/database/Database.php(1654): Wikimedia\Rdbms\Database->getQueryExceptionAndLog(string, string, string, string)
#1 /workspace/src/includes/libs/rdbms/database/Database.php(1227): Wikimedia\Rdbms\Database->reportQueryError(string, string, string, string, boolean)
#2 /workspace/src/includes/libs/rdbms/database/DatabasePostgres.php(578): Wikimedia\Rdbms\Database->query(string, string, integer)
#3 /workspace/src/includes/libs/rdbms/database/Database.php(2317): Wikimedia\Rdbms\DatabasePostgres->doInsertNonConflicting(string, array, string)
#4 /workspace/src/includes/libs/rdbms/database/Database.php(3562): Wikimedia\Rdbms\Database->insert(string, array, string, array)
#5 /workspace/src/includes/libs/rdbms/database/DatabasePostgres.php(657): Wikimedia\Rdbms\Database->doInsertSelectGeneric(string, string, array, array, string, array, array, array)
#6 /workspace/src/includes/libs/rdbms/database/Database.php(3480): Wikimedia\Rdbms\DatabasePostgres->doInsertSelectNative(string, string, array, array, string, array, array, array)
#7 /workspace/src/tests/phpunit/integration/includes/db/DatabasePostgresTest.php(133): Wikimedia\Rdbms\Database->insertSelect(string, string, array, array, string, array)
#8 /workspace/src/tests/phpunit/integration/includes/db/DatabasePostgresTest.php(162): DatabasePostgresTest->doTestInsertSelectIgnore()
#9 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(1415): DatabasePostgresTest->testInsertSelectIgnoreOld()
#10 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(1035): PHPUnit\Framework\TestCase->runTest()
#11 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestResult.php(691): PHPUnit\Framework\TestCase->runBare()
#12 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(763): PHPUnit\Framework\TestResult->run(DatabasePostgresTest)
#13 /workspace/src/tests/phpunit/MediaWikiIntegrationTestCase.php(446): PHPUnit\Framework\TestCase->run(PHPUnit\Framework\TestResult)
#14 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): MediaWikiIntegrationTestCase->run(PHPUnit\Framework\TestResult)
#15 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#16 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#17 /workspace/src/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(627): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#18 /workspace/src/vendor/phpunit/phpunit/src/TextUI/Command.php(204): PHPUnit\TextUI\TestRunner->doRun(PHPUnit\Framework\TestSuite, array, array, boolean)
#19 /workspace/src/tests/phpunit/phpunit.php(75): PHPUnit\TextUI\Command->run(array, boolean)
#20 /workspace/src/maintenance/doMaintenance.php(107): PHPUnitMaintClass->execute()
#21 /workspace/src/tests/phpunit/phpunit.php(134): require(string)
#22 {main}
Tue Jul 28 20:35:54 UTC 2020	0e2c382fa962	postgres-unittest_	Error 23502 from DatabasePostgresTest::doTestInsertSelectIgnore, ERROR:  null value in column "i" violates not-null constraint
DETAIL:  Failing row contains (null).
 INSERT INTO "unittest_bar" (i) SELECT  i  FROM "unittest_foo"      ON CONFLICT DO NOTHING /workspace/db/quibble-postgres-i8t02bo5/socket
#0 /workspace/src/includes/libs/rdbms/database/Database.php(1654): Wikimedia\Rdbms\Database->getQueryExceptionAndLog(string, string, string, string)
#1 /workspace/src/includes/libs/rdbms/database/Database.php(1227): Wikimedia\Rdbms\Database->reportQueryError(string, string, string, string, boolean)
#2 /workspace/src/includes/libs/rdbms/database/DatabasePostgres.php(652): Wikimedia\Rdbms\Database->query(string, string, integer)
#3 /workspace/src/includes/libs/rdbms/database/Database.php(3480): Wikimedia\Rdbms\DatabasePostgres->doInsertSelectNative(string, string, array, array, string, array, array, array)
#4 /workspace/src/tests/phpunit/integration/includes/db/DatabasePostgresTest.php(133): Wikimedia\Rdbms\Database->insertSelect(string, string, array, array, string, array)
#5 /workspace/src/tests/phpunit/integration/includes/db/DatabasePostgresTest.php(180): DatabasePostgresTest->doTestInsertSelectIgnore()
#6 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(1415): DatabasePostgresTest->testInsertSelectIgnoreNew()
#7 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(1035): PHPUnit\Framework\TestCase->runTest()
#8 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestResult.php(691): PHPUnit\Framework\TestCase->runBare()
#9 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(763): PHPUnit\Framework\TestResult->run(DatabasePostgresTest)
#10 /workspace/src/tests/phpunit/MediaWikiIntegrationTestCase.php(446): PHPUnit\Framework\TestCase->run(PHPUnit\Framework\TestResult)
#11 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): MediaWikiIntegrationTestCase->run(PHPUnit\Framework\TestResult)
#12 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#13 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#14 /workspace/src/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(627): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#15 /workspace/src/vendor/phpunit/phpunit/src/TextUI/Command.php(204): PHPUnit\TextUI\TestRunner->doRun(PHPUnit\Framework\TestSuite, array, array, boolean)
#16 /workspace/src/tests/phpunit/phpunit.php(75): PHPUnit\TextUI\Command->run(array, boolean)
#17 /workspace/src/maintenance/doMaintenance.php(107): PHPUnitMaintClass->execute()
#18 /workspace/src/tests/phpunit/phpunit.php(134): require(string)
#19 {main}

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript

Change 616951 had a related patch set uploaded (by Krinkle; owner: Krinkle):
[mediawiki/core@master] tests: Disable the broken ignore and cases of DatabasePostgresTest

https://gerrit.wikimedia.org/r/616951

Change 616951 merged by jenkins-bot:
[mediawiki/core@master] tests: Disable the broken ignore and cases of DatabasePostgresTest

https://gerrit.wikimedia.org/r/616951

Change 616942 had a related patch set uploaded (by Krinkle; owner: Krinkle):
[mediawiki/core@REL1_35] tests: Disable the broken ignore and cases of DatabasePostgresTest

https://gerrit.wikimedia.org/r/616942

Change 616942 merged by Krinkle:
[mediawiki/core@REL1_35] tests: Disable the broken ignore and cases of DatabasePostgresTest

https://gerrit.wikimedia.org/r/616942

eprodromou subscribed.

Since this is silenced, we need a volunteer interested in PGSQL to take a look at these tests.

I can look at this as part of getting https://gerrit.wikimedia.org/r/c/mediawiki/core/+/574101 merged, since it involves the same methods and testing of all the DB types anyway.

Since 2022 we require PG 10. There is no "old insert ignore" anymore, it was removed in 9a457f9fe8024e26bed239d5d68b0ad9957379eb.

Change #1128562 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[mediawiki/core@master] rdbms: Fix disabled PostgreSQL test

https://gerrit.wikimedia.org/r/1128562

Change #1128562 merged by jenkins-bot:

[mediawiki/core@master] rdbms: Fix disabled PostgreSQL test

https://gerrit.wikimedia.org/r/1128562