jenkins-bot has submitted this change and it was merged.

Change subject: Requeue delayed messages
......................................................................


Requeue delayed messages

Maintenance task to take the place of the delay_till header.

Bug: T142028
Change-Id: Ice63d509ab4764fd74d9022589e9b7db20bf5d82
---
A Maintenance/RequeueDelayedMessages.php
1 file changed, 64 insertions(+), 0 deletions(-)

Approvals:
  Awight: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/Maintenance/RequeueDelayedMessages.php 
b/Maintenance/RequeueDelayedMessages.php
new file mode 100644
index 0000000..be16a74
--- /dev/null
+++ b/Maintenance/RequeueDelayedMessages.php
@@ -0,0 +1,64 @@
+<?php
+namespace SmashPig\Maintenance;
+
+require ( 'MaintenanceBase.php' );
+
+use SmashPig\Core\Configuration;
+use SmashPig\Core\Logging\Logger;
+use SmashPig\Core\DataStores\DamagedDatabase;
+
+$maintClass = '\SmashPig\Maintenance\RequeueDelayedMessages';
+
+/**
+ * Requeues damaged messages that are ready for re-processing
+ */
+class RequeueDelayedMessages extends MaintenanceBase {
+
+       /**
+        * @var DamagedDatabase
+        */
+       protected $damagedDatabase;
+
+
+       public function __construct() {
+               parent::__construct();
+               $this->addOption(
+                       'max-messages', 'At most requeue <n> messages', 500, 'm'
+               );
+       }
+
+       /**
+        * Do the actual work of the script.
+        */
+       public function execute() {
+               $this->damagedDatabase = DamagedDatabase::get();
+
+               $messages = $this->damagedDatabase->fetchRetryMessages(
+                       $this->getOption( 'max-messages' )
+               );
+               $stats = array();
+               $config = Configuration::getDefaultConfig();
+
+               foreach( $messages as $message ) {
+                       $queueName = $message['original_queue'];
+                       // FIXME: getting it by alias, this will be annoying 
cos -new
+                       $queue = $config->object( "data-store/$queueName", true 
);
+                       unset( $message['original_queue'] );
+                       $queue->push( $message );
+                       $this->damagedDatabase->deleteMessage( $message );
+                       if ( isset( $stats[$queueName] ) ) {
+                               $stats[$queueName]++;
+                       } else {
+                               $stats[$queueName] = 1;
+                       }
+               }
+
+               foreach ( $stats as $queueName => $count ) {
+                       Logger::info(
+                               "Requeued $count messages to $queueName."
+                       );
+               }
+       }
+}
+
+require ( RUN_MAINTENANCE_IF_MAIN );

-- 
To view, visit https://gerrit.wikimedia.org/r/302839
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ice63d509ab4764fd74d9022589e9b7db20bf5d82
Gerrit-PatchSet: 7
Gerrit-Project: wikimedia/fundraising/SmashPig
Gerrit-Branch: master
Gerrit-Owner: Ejegg <[email protected]>
Gerrit-Reviewer: Awight <[email protected]>
Gerrit-Reviewer: Cdentinger <[email protected]>
Gerrit-Reviewer: Siebrand <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to