Page MenuHomePhabricator

D21532.diff
No OneTemporary

D21532.diff

diff --git a/src/applications/repository/engine/PhabricatorRepositoryEngine.php b/src/applications/repository/engine/PhabricatorRepositoryEngine.php
--- a/src/applications/repository/engine/PhabricatorRepositoryEngine.php
+++ b/src/applications/repository/engine/PhabricatorRepositoryEngine.php
@@ -119,6 +119,7 @@
$options = array(
'priority' => $task_priority,
'objectPHID' => $commit_phid,
+ 'containerPHID' => $repository->getPHID(),
);
PhabricatorWorker::scheduleTask($class, $data, $options);
diff --git a/src/applications/repository/management/PhabricatorRepositoryManagementReparseWorkflow.php b/src/applications/repository/management/PhabricatorRepositoryManagementReparseWorkflow.php
--- a/src/applications/repository/management/PhabricatorRepositoryManagementReparseWorkflow.php
+++ b/src/applications/repository/management/PhabricatorRepositoryManagementReparseWorkflow.php
@@ -249,6 +249,7 @@
$spec = array(
'commitID' => $commit->getID(),
'only' => !$importing,
+ 'via' => 'reparse',
);
foreach ($classes as $class) {
@@ -258,6 +259,8 @@
$spec,
array(
'priority' => PhabricatorWorker::PRIORITY_IMPORT,
+ 'objectPHID' => $commit->getPHID(),
+ 'containerPHID' => $repository->getPHID(),
));
} catch (PhabricatorWorkerPermanentFailureException $ex) {
// See T13315. We expect some reparse steps to occasionally raise
diff --git a/src/applications/repository/worker/PhabricatorRepositoryCommitParserWorker.php b/src/applications/repository/worker/PhabricatorRepositoryCommitParserWorker.php
--- a/src/applications/repository/worker/PhabricatorRepositoryCommitParserWorker.php
+++ b/src/applications/repository/worker/PhabricatorRepositoryCommitParserWorker.php
@@ -51,10 +51,42 @@
$this->parseCommit($repository, $this->commit);
}
- final protected function shouldQueueFollowupTasks() {
+ private function shouldQueueFollowupTasks() {
return !idx($this->getTaskData(), 'only');
}
+ final protected function queueCommitTask($task_class) {
+ if (!$this->shouldQueueFollowupTasks()) {
+ return;
+ }
+
+ $commit = $this->loadCommit();
+ $repository = $commit->getRepository();
+
+ $data = array(
+ 'commitID' => $commit->getID(),
+ );
+
+ $task_data = $this->getTaskData();
+ if (isset($task_data['via'])) {
+ $data['via'] = $task_data['via'];
+ }
+
+ $options = array(
+ // We queue followup tasks at default priority so that the queue finishes
+ // work it has started before starting more work. If followups are queued
+ // at the same priority level, we do all message parses first, then all
+ // change parses, etc. This makes progress uneven. See T11677 for
+ // discussion.
+ 'priority' => parent::PRIORITY_DEFAULT,
+
+ 'objectPHID' => $commit->getPHID(),
+ 'containerPHID' => $repository->getPHID(),
+ );
+
+ $this->queueTask($task_class, $data, $options);
+ }
+
protected function getImportStepFlag() {
return null;
}
diff --git a/src/applications/repository/worker/__tests__/PhabricatorChangeParserTestCase.php b/src/applications/repository/worker/__tests__/PhabricatorChangeParserTestCase.php
--- a/src/applications/repository/worker/__tests__/PhabricatorChangeParserTestCase.php
+++ b/src/applications/repository/worker/__tests__/PhabricatorChangeParserTestCase.php
@@ -396,6 +396,8 @@
}
public function testSubversionParser() {
+ $this->requireBinaryForTest('svn');
+
$repository = $this->buildDiscoveredRepository('CHC');
$viewer = PhabricatorUser::getOmnipotentUser();
@@ -955,6 +957,8 @@
}
public function testSubversionPartialParser() {
+ $this->requireBinaryForTest('svn');
+
$repository = $this->buildBareRepository('CHD');
$repository->setDetail('svn-subpath', 'trunk/');
@@ -1059,6 +1063,8 @@
}
public function testSubversionValidRootParser() {
+ $this->requireBinaryForTest('svn');
+
// First, automatically configure the root correctly.
$repository = $this->buildBareRepository('CHD');
id(new PhabricatorRepositoryPullEngine())
@@ -1104,6 +1110,8 @@
}
public function testSubversionForeignStubsParser() {
+ $this->requireBinaryForTest('svn');
+
$repository = $this->buildBareRepository('CHE');
$repository->setDetail('svn-subpath', 'branch/');
diff --git a/src/applications/repository/worker/commitchangeparser/PhabricatorRepositoryCommitChangeParserWorker.php b/src/applications/repository/worker/commitchangeparser/PhabricatorRepositoryCommitChangeParserWorker.php
--- a/src/applications/repository/worker/commitchangeparser/PhabricatorRepositoryCommitChangeParserWorker.php
+++ b/src/applications/repository/worker/commitchangeparser/PhabricatorRepositoryCommitChangeParserWorker.php
@@ -99,14 +99,7 @@
}
protected function finishParse() {
- $commit = $this->commit;
- if ($this->shouldQueueFollowupTasks()) {
- $this->queueTask(
- 'PhabricatorRepositoryCommitPublishWorker',
- array(
- 'commitID' => $commit->getID(),
- ));
- }
+ $this->queueCommitTask('PhabricatorRepositoryCommitPublishWorker');
}
private function writeCommitChanges(
diff --git a/src/applications/repository/worker/commitmessageparser/PhabricatorRepositoryCommitMessageParserWorker.php b/src/applications/repository/worker/commitmessageparser/PhabricatorRepositoryCommitMessageParserWorker.php
--- a/src/applications/repository/worker/commitmessageparser/PhabricatorRepositoryCommitMessageParserWorker.php
+++ b/src/applications/repository/worker/commitmessageparser/PhabricatorRepositoryCommitMessageParserWorker.php
@@ -24,21 +24,7 @@
$this->updateCommitData($commit, $data);
}
- if ($this->shouldQueueFollowupTasks()) {
- $this->queueTask(
- $this->getFollowupTaskClass(),
- array(
- 'commitID' => $commit->getID(),
- ),
- array(
- // We queue followup tasks at default priority so that the queue
- // finishes work it has started before starting more work. If
- // followups are queued at the same priority level, we do all
- // message parses first, then all change parses, etc. This makes
- // progress uneven. See T11677 for discussion.
- 'priority' => PhabricatorWorker::PRIORITY_DEFAULT,
- ));
- }
+ $this->queueCommitTask($this->getFollowupTaskClass());
}
final protected function updateCommitData(

File Metadata

Mime Type
text/plain
Expires
Fri, Mar 14, 11:42 AM (1 w, 1 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7354075
Default Alt Text
D21532.diff (6 KB)

Event Timeline