[MediaWiki-commits] [Gerrit] Update Wikidata - fix for change dispatcher - change (mediawiki...Wikidata)
jenkins-bot has submitted this change and it was merged. Change subject: Update Wikidata - fix for change dispatcher .. Update Wikidata - fix for change dispatcher stop putting unused statement diffs in wb_changes, which is causing unnecesary performance impact on the change dispatcher (and also in the clients, when handling changes there) Change-Id: I490d15655841f644608fe2b1572f005c4d890d5f --- M composer.lock M extensions/Wikibase/lib/includes/changes/EntityChangeFactory.php M extensions/Wikibase/lib/tests/phpunit/changes/EntityChangeFactoryTest.php M vendor/composer/installed.json 4 files changed, 121 insertions(+), 27 deletions(-) Approvals: Aude: Looks good to me, approved jenkins-bot: Verified diff --git a/composer.lock b/composer.lock index d8d5828..42f4159 100644 --- a/composer.lock +++ b/composer.lock @@ -1379,7 +1379,7 @@ "source": { "type": "git", "url": "https://gerrit.wikimedia.org/r/mediawiki/extensions/Wikibase";, -"reference": "27dc06de687582e3c0de5207ea79511703861eee" +"reference": "fd1f82818ea4fa015d5ae41a12add45387979b75" }, "require": { "data-values/common": "~0.3.0", @@ -1461,7 +1461,7 @@ "issues": "https://phabricator.wikimedia.org/";, "irc": "irc://irc.freenode.net/wikidata" }, -"time": "2015-08-31 13:16:41" +"time": "2015-09-01 16:20:19" }, { "name": "wikibase/wikimedia-badges", diff --git a/extensions/Wikibase/lib/includes/changes/EntityChangeFactory.php b/extensions/Wikibase/lib/includes/changes/EntityChangeFactory.php index 06d9638..20b186a 100644 --- a/extensions/Wikibase/lib/includes/changes/EntityChangeFactory.php +++ b/extensions/Wikibase/lib/includes/changes/EntityChangeFactory.php @@ -8,6 +8,7 @@ use Wikibase\DataModel\Entity\EntityDocument; use Wikibase\DataModel\Entity\EntityId; use Wikibase\DataModel\Services\Diff\EntityDiffer; +use Wikibase\DataModel\Statement\StatementList; use Wikibase\EntityChange; use Wikibase\EntityFactory; @@ -131,6 +132,11 @@ $theEntity = $newEntity; } + // don't include statements diff, since those are unused and not helpful + // performance-wise to the dispatcher and change handling. + $oldEntity->setStatements( new StatementList() ); + $newEntity->setStatements( new StatementList() ); + $diff = $this->entityDiffer->diffEntities( $oldEntity, $newEntity ); /** diff --git a/extensions/Wikibase/lib/tests/phpunit/changes/EntityChangeFactoryTest.php b/extensions/Wikibase/lib/tests/phpunit/changes/EntityChangeFactoryTest.php index f64e4ec..80530d8 100644 --- a/extensions/Wikibase/lib/tests/phpunit/changes/EntityChangeFactoryTest.php +++ b/extensions/Wikibase/lib/tests/phpunit/changes/EntityChangeFactoryTest.php @@ -2,6 +2,9 @@ namespace Wikibase\Lib\Test\Change; +use Diff\DiffOp\Diff\Diff; +use Diff\DiffOp\DiffOpAdd; +use Diff\DiffOp\DiffOpRemove; use Wikibase\ChangesTable; use Wikibase\DataModel\Entity\Entity; use Wikibase\DataModel\Entity\EntityId; @@ -10,6 +13,10 @@ use Wikibase\DataModel\Entity\Property; use Wikibase\DataModel\Entity\PropertyId; use Wikibase\DataModel\Services\Diff\EntityDiffer; +use Wikibase\DataModel\SiteLink; +use Wikibase\DataModel\Snak\PropertyNoValueSnak; +use Wikibase\DataModel\Statement\Statement; +use Wikibase\DataModel\Statement\StatementList; use Wikibase\EntityChange; use Wikibase\EntityFactory; use Wikibase\Lib\Changes\EntityChangeFactory; @@ -26,6 +33,7 @@ * * @licence GNU GPL v2+ * @author Daniel Kinzler + * @author Katie Filbert < aude.w...@gmail.com > */ class EntityChangeFactoryTest extends \PHPUnit_Framework_TestCase { @@ -78,38 +86,118 @@ $this->assertEquals( $entityId, $change->getEntityId() ); } - public function newFromUpdateProvider() { - $item1 = new Item( new ItemId( 'Q1' ) ); - $item2 = new Item( new ItemId( 'Q2' ) ); + public function testNewFromUpdate() { + $itemId = new ItemId( 'Q1' ); - $prop1 = Property::newFromType( 'string' ); - $prop1->setId( new PropertyId( 'P1' ) ); + $item = new Item( $itemId ); + $item->setLabel( 'en', 'kitten' ); - return array( - 'add item' => array( EntityChange::ADD, null, $item1, 'wikibase-item~add' ), - 'update item' => array( EntityChange::UPDATE, $item1, $item2, 'wikibase-item~update' ), - 'remove property' => array( EntityChange::REMOVE, $prop1, null, 'wikibase-property~remove' ), + $updatedItem = new Item( $itemId ); + $updatedItem->setLabel( 'en', 'kit
[MediaWiki-commits] [Gerrit] Update Wikidata - fix for change dispatcher - change (mediawiki...Wikidata)
Aude has uploaded a new change for review. https://gerrit.wikimedia.org/r/235265 Change subject: Update Wikidata - fix for change dispatcher .. Update Wikidata - fix for change dispatcher stop putting unused statement diffs in wb_changes, which is causing unnecesary performance impact on the change dispatcher (and also in the clients, when handling changes there) Change-Id: I490d15655841f644608fe2b1572f005c4d890d5f --- M composer.lock M extensions/Wikibase/lib/includes/changes/EntityChangeFactory.php M extensions/Wikibase/lib/tests/phpunit/changes/EntityChangeFactoryTest.php M vendor/composer/installed.json 4 files changed, 121 insertions(+), 27 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikidata refs/changes/65/235265/1 diff --git a/composer.lock b/composer.lock index d8d5828..42f4159 100644 --- a/composer.lock +++ b/composer.lock @@ -1379,7 +1379,7 @@ "source": { "type": "git", "url": "https://gerrit.wikimedia.org/r/mediawiki/extensions/Wikibase";, -"reference": "27dc06de687582e3c0de5207ea79511703861eee" +"reference": "fd1f82818ea4fa015d5ae41a12add45387979b75" }, "require": { "data-values/common": "~0.3.0", @@ -1461,7 +1461,7 @@ "issues": "https://phabricator.wikimedia.org/";, "irc": "irc://irc.freenode.net/wikidata" }, -"time": "2015-08-31 13:16:41" +"time": "2015-09-01 16:20:19" }, { "name": "wikibase/wikimedia-badges", diff --git a/extensions/Wikibase/lib/includes/changes/EntityChangeFactory.php b/extensions/Wikibase/lib/includes/changes/EntityChangeFactory.php index 06d9638..20b186a 100644 --- a/extensions/Wikibase/lib/includes/changes/EntityChangeFactory.php +++ b/extensions/Wikibase/lib/includes/changes/EntityChangeFactory.php @@ -8,6 +8,7 @@ use Wikibase\DataModel\Entity\EntityDocument; use Wikibase\DataModel\Entity\EntityId; use Wikibase\DataModel\Services\Diff\EntityDiffer; +use Wikibase\DataModel\Statement\StatementList; use Wikibase\EntityChange; use Wikibase\EntityFactory; @@ -131,6 +132,11 @@ $theEntity = $newEntity; } + // don't include statements diff, since those are unused and not helpful + // performance-wise to the dispatcher and change handling. + $oldEntity->setStatements( new StatementList() ); + $newEntity->setStatements( new StatementList() ); + $diff = $this->entityDiffer->diffEntities( $oldEntity, $newEntity ); /** diff --git a/extensions/Wikibase/lib/tests/phpunit/changes/EntityChangeFactoryTest.php b/extensions/Wikibase/lib/tests/phpunit/changes/EntityChangeFactoryTest.php index f64e4ec..80530d8 100644 --- a/extensions/Wikibase/lib/tests/phpunit/changes/EntityChangeFactoryTest.php +++ b/extensions/Wikibase/lib/tests/phpunit/changes/EntityChangeFactoryTest.php @@ -2,6 +2,9 @@ namespace Wikibase\Lib\Test\Change; +use Diff\DiffOp\Diff\Diff; +use Diff\DiffOp\DiffOpAdd; +use Diff\DiffOp\DiffOpRemove; use Wikibase\ChangesTable; use Wikibase\DataModel\Entity\Entity; use Wikibase\DataModel\Entity\EntityId; @@ -10,6 +13,10 @@ use Wikibase\DataModel\Entity\Property; use Wikibase\DataModel\Entity\PropertyId; use Wikibase\DataModel\Services\Diff\EntityDiffer; +use Wikibase\DataModel\SiteLink; +use Wikibase\DataModel\Snak\PropertyNoValueSnak; +use Wikibase\DataModel\Statement\Statement; +use Wikibase\DataModel\Statement\StatementList; use Wikibase\EntityChange; use Wikibase\EntityFactory; use Wikibase\Lib\Changes\EntityChangeFactory; @@ -26,6 +33,7 @@ * * @licence GNU GPL v2+ * @author Daniel Kinzler + * @author Katie Filbert < aude.w...@gmail.com > */ class EntityChangeFactoryTest extends \PHPUnit_Framework_TestCase { @@ -78,38 +86,118 @@ $this->assertEquals( $entityId, $change->getEntityId() ); } - public function newFromUpdateProvider() { - $item1 = new Item( new ItemId( 'Q1' ) ); - $item2 = new Item( new ItemId( 'Q2' ) ); + public function testNewFromUpdate() { + $itemId = new ItemId( 'Q1' ); - $prop1 = Property::newFromType( 'string' ); - $prop1->setId( new PropertyId( 'P1' ) ); + $item = new Item( $itemId ); + $item->setLabel( 'en', 'kitten' ); - return array( - 'add item' => array( EntityChange::ADD, null, $item1, 'wikibase-item~add' ), - 'update item' => array( EntityChange::UPDATE, $item1, $item2, 'wikibase-item~update' ), - 'remove property' => array( EntityChange::REMOVE, $prop1, null, 'wikibase-property~remove' ), + $updatedItem = new Item( $itemI