Add bin/worker flood, for flooding the task queue with work
				
					
				
			Summary: Ref T6615. Ref T3554. We need better tooling around the queue eventually, so start here. Test Plan: Added 100K+ tasks locally with `bin/worker flood`. Executed some of them with `bin/phd debug taskmaster` (we already have a TestWorker, used in unit tests). Reviewers: btrahan Reviewed By: btrahan Subscribers: epriestley Maniphest Tasks: T3554, T6615 Differential Revision: https://secure.phabricator.com/D10894
This commit is contained in:
		
							
								
								
									
										1
									
								
								bin/worker
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								bin/worker
									
									
									
									
									
										Symbolic link
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					../scripts/setup/manage_worker.php
 | 
				
			||||||
							
								
								
									
										21
									
								
								scripts/setup/manage_worker.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										21
									
								
								scripts/setup/manage_worker.php
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env php
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$root = dirname(dirname(dirname(__FILE__)));
 | 
				
			||||||
 | 
					require_once $root.'/scripts/__init_script__.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$args = new PhutilArgumentParser($argv);
 | 
				
			||||||
 | 
					$args->setTagline('manage task queue');
 | 
				
			||||||
 | 
					$args->setSynopsis(<<<EOSYNOPSIS
 | 
				
			||||||
 | 
					**worker** __command__ [__options__]
 | 
				
			||||||
 | 
					    Manage the task queue.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EOSYNOPSIS
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					$args->parseStandardArguments();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$workflows = id(new PhutilSymbolLoader())
 | 
				
			||||||
 | 
					  ->setAncestorClass('PhabricatorWorkerManagementWorkflow')
 | 
				
			||||||
 | 
					  ->loadObjects();
 | 
				
			||||||
 | 
					$workflows[] = new PhutilHelpArgumentWorkflow();
 | 
				
			||||||
 | 
					$args->parseWorkflows($workflows);
 | 
				
			||||||
@@ -2515,6 +2515,8 @@ phutil_register_library_map(array(
 | 
				
			|||||||
    'PhabricatorWorkerArchiveTask' => 'infrastructure/daemon/workers/storage/PhabricatorWorkerArchiveTask.php',
 | 
					    'PhabricatorWorkerArchiveTask' => 'infrastructure/daemon/workers/storage/PhabricatorWorkerArchiveTask.php',
 | 
				
			||||||
    'PhabricatorWorkerDAO' => 'infrastructure/daemon/workers/storage/PhabricatorWorkerDAO.php',
 | 
					    'PhabricatorWorkerDAO' => 'infrastructure/daemon/workers/storage/PhabricatorWorkerDAO.php',
 | 
				
			||||||
    'PhabricatorWorkerLeaseQuery' => 'infrastructure/daemon/workers/query/PhabricatorWorkerLeaseQuery.php',
 | 
					    'PhabricatorWorkerLeaseQuery' => 'infrastructure/daemon/workers/query/PhabricatorWorkerLeaseQuery.php',
 | 
				
			||||||
 | 
					    'PhabricatorWorkerManagementFloodWorkflow' => 'infrastructure/daemon/workers/management/PhabricatorWorkerManagementFloodWorkflow.php',
 | 
				
			||||||
 | 
					    'PhabricatorWorkerManagementWorkflow' => 'infrastructure/daemon/workers/management/PhabricatorWorkerManagementWorkflow.php',
 | 
				
			||||||
    'PhabricatorWorkerPermanentFailureException' => 'infrastructure/daemon/workers/exception/PhabricatorWorkerPermanentFailureException.php',
 | 
					    'PhabricatorWorkerPermanentFailureException' => 'infrastructure/daemon/workers/exception/PhabricatorWorkerPermanentFailureException.php',
 | 
				
			||||||
    'PhabricatorWorkerTask' => 'infrastructure/daemon/workers/storage/PhabricatorWorkerTask.php',
 | 
					    'PhabricatorWorkerTask' => 'infrastructure/daemon/workers/storage/PhabricatorWorkerTask.php',
 | 
				
			||||||
    'PhabricatorWorkerTaskData' => 'infrastructure/daemon/workers/storage/PhabricatorWorkerTaskData.php',
 | 
					    'PhabricatorWorkerTaskData' => 'infrastructure/daemon/workers/storage/PhabricatorWorkerTaskData.php',
 | 
				
			||||||
@@ -5676,6 +5678,8 @@ phutil_register_library_map(array(
 | 
				
			|||||||
    'PhabricatorWorkerArchiveTask' => 'PhabricatorWorkerTask',
 | 
					    'PhabricatorWorkerArchiveTask' => 'PhabricatorWorkerTask',
 | 
				
			||||||
    'PhabricatorWorkerDAO' => 'PhabricatorLiskDAO',
 | 
					    'PhabricatorWorkerDAO' => 'PhabricatorLiskDAO',
 | 
				
			||||||
    'PhabricatorWorkerLeaseQuery' => 'PhabricatorQuery',
 | 
					    'PhabricatorWorkerLeaseQuery' => 'PhabricatorQuery',
 | 
				
			||||||
 | 
					    'PhabricatorWorkerManagementFloodWorkflow' => 'PhabricatorWorkerManagementWorkflow',
 | 
				
			||||||
 | 
					    'PhabricatorWorkerManagementWorkflow' => 'PhabricatorManagementWorkflow',
 | 
				
			||||||
    'PhabricatorWorkerPermanentFailureException' => 'Exception',
 | 
					    'PhabricatorWorkerPermanentFailureException' => 'Exception',
 | 
				
			||||||
    'PhabricatorWorkerTask' => 'PhabricatorWorkerDAO',
 | 
					    'PhabricatorWorkerTask' => 'PhabricatorWorkerDAO',
 | 
				
			||||||
    'PhabricatorWorkerTaskData' => 'PhabricatorWorkerDAO',
 | 
					    'PhabricatorWorkerTaskData' => 'PhabricatorWorkerDAO',
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,36 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					final class PhabricatorWorkerManagementFloodWorkflow
 | 
				
			||||||
 | 
					  extends PhabricatorWorkerManagementWorkflow {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function didConstruct() {
 | 
				
			||||||
 | 
					    $this
 | 
				
			||||||
 | 
					      ->setName('flood')
 | 
				
			||||||
 | 
					      ->setExamples('**flood**')
 | 
				
			||||||
 | 
					      ->setSynopsis(
 | 
				
			||||||
 | 
					        pht(
 | 
				
			||||||
 | 
					          'Flood the queue with test tasks. This command is intended for '.
 | 
				
			||||||
 | 
					          'use when developing and debugging Phabricator.'))
 | 
				
			||||||
 | 
					      ->setArguments(array());
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function execute(PhutilArgumentParser $args) {
 | 
				
			||||||
 | 
					    $console = PhutilConsole::getConsole();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $console->writeOut(
 | 
				
			||||||
 | 
					      "%s\n",
 | 
				
			||||||
 | 
					      pht('Adding many test tasks to worker queue. Use ^C to exit.'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $n = 0;
 | 
				
			||||||
 | 
					    while (true) {
 | 
				
			||||||
 | 
					      PhabricatorWorker::scheduleTask(
 | 
				
			||||||
 | 
					        'PhabricatorTestWorker',
 | 
				
			||||||
 | 
					        array());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (($n++ % 100) === 0) {
 | 
				
			||||||
 | 
					        $console->writeOut('.');
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					abstract class PhabricatorWorkerManagementWorkflow
 | 
				
			||||||
 | 
					  extends PhabricatorManagementWorkflow {}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user