jenkins-bot has submitted this change and it was merged. Change subject: Per-cluster timeouts for ElasticaWrite job ......................................................................
Per-cluster timeouts for ElasticaWrite job Change-Id: Ifdc928b185349263eba06fb47fc1852c2853ccf9 (cherry picked from commit 2d202aae73c675c79110477542bea486dcb95717) --- M includes/ClusterSettings.php M includes/Job/ElasticaWrite.php M tests/unit/ClusterSettingsTest.php 3 files changed, 42 insertions(+), 2 deletions(-) Approvals: EBernhardson: Looks good to me, approved jenkins-bot: Verified diff --git a/includes/ClusterSettings.php b/includes/ClusterSettings.php index 3370a4a..f32a04d 100644 --- a/includes/ClusterSettings.php +++ b/includes/ClusterSettings.php @@ -60,4 +60,15 @@ throw new \Exception( "If \$wgCirrusSearchReplicas is " . "an array it must contain all index types." ); } + + public function getDropDelayedJobsAfter() { + $timeout = $this->config->get( 'CirrusSearchDropDelayedJobsAfter' ); + if ( is_int( $timeout ) ) { + return $timeout; + } elseif ( isset( $timeout[$this->cluster] ) ) { + return $timeout[$this->cluster]; + } + throw new \Exception( "If \$wgCirrusSearchDropDelayedJobsAfter is " . + "an array it must contain all configured clusters." ); + } } diff --git a/includes/Job/ElasticaWrite.php b/includes/Job/ElasticaWrite.php index e6b936c..caaeceb 100644 --- a/includes/Job/ElasticaWrite.php +++ b/includes/Job/ElasticaWrite.php @@ -58,7 +58,6 @@ } protected function doJob() { - global $wgCirrusSearchDropDelayedJobsAfter; $connections = $this->decideClusters(); $clusterNames = implode( ', ', array_keys( $connections ) ); @@ -96,7 +95,8 @@ if ( $status->hasMessage( 'cirrussearch-indexes-frozen' ) ) { $diff = time() - $this->params['createdAt']; - if ( $diff > $wgCirrusSearchDropDelayedJobsAfter ) { + $dropTimeout = $conn->getSettings()->getDropDelayedJobsAfter(); + if ( $diff > $dropTimeout ) { LoggerFactory::getInstance( 'CirrusSearchChangeFailed' )->warning( "Dropping delayed job for DataSender::{method} in cluster {cluster} after waiting {diff}s", array( diff --git a/tests/unit/ClusterSettingsTest.php b/tests/unit/ClusterSettingsTest.php index 8c72d97..d79f96b 100644 --- a/tests/unit/ClusterSettingsTest.php +++ b/tests/unit/ClusterSettingsTest.php @@ -78,4 +78,33 @@ $settings = new ClusterSettings( $config, $cluster ); $this->assertEquals( $expect, $settings->getReplicaCount( $indexType ) ); } + + public static function provideDropDelayedJobsAfter() { + return array( + 'Simple integer timeout is returned directly' => array( + 60, 'eqiad', 60 + ), + 'Can set per-cluster timeout' => array( + array( 'eqiad' => 99, 'labsearch' => 42 ), + 'labsearch', + 42 + ), + ); + } + + /** + * @dataProvider provideDropDelayedJobsAfter() + */ + public function testDropDelayedJobsAfter( $timeout, $cluster, $expect ) { + $config = $this->getMockBuilder( 'CirrusSearch\SearchConfig' ) + ->disableOriginalConstructor() + ->getMock(); + $config->expects( $this->any() ) + ->method( 'get' ) + ->with( 'CirrusSearchDropDelayedJobsAfter' ) + ->will( $this->returnValue( $timeout ) ); + + $settings = new ClusterSettings( $config, $cluster ); + $this->assertEquals( $expect, $settings->getDropDelayedJobsAfter() ); + } } -- To view, visit https://gerrit.wikimedia.org/r/247346 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ifdc928b185349263eba06fb47fc1852c2853ccf9 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/CirrusSearch Gerrit-Branch: wmf/1.27.0-wmf.2 Gerrit-Owner: EBernhardson <ebernhard...@wikimedia.org> Gerrit-Reviewer: Chad <ch...@wikimedia.org> Gerrit-Reviewer: DCausse <dcau...@wikimedia.org> Gerrit-Reviewer: EBernhardson <ebernhard...@wikimedia.org> Gerrit-Reviewer: Manybubbles <never...@wikimedia.org> Gerrit-Reviewer: Smalyshev <smalys...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits