Page MenuHomestyx hydra

No OneTemporary

diff --git a/src/applications/transactions/engineextension/PhabricatorTransactionsFulltextEngineExtension.php b/src/applications/transactions/engineextension/PhabricatorTransactionsFulltextEngineExtension.php
index c9f43f49b2..4eeda3251c 100644
--- a/src/applications/transactions/engineextension/PhabricatorTransactionsFulltextEngineExtension.php
+++ b/src/applications/transactions/engineextension/PhabricatorTransactionsFulltextEngineExtension.php
@@ -1,45 +1,61 @@
<?php
final class PhabricatorTransactionsFulltextEngineExtension
extends PhabricatorFulltextEngineExtension {
const EXTENSIONKEY = 'transactions';
public function getExtensionName() {
return pht('Comments');
}
public function shouldEnrichFulltextObject($object) {
return ($object instanceof PhabricatorApplicationTransactionInterface);
}
public function enrichFulltextObject(
$object,
PhabricatorSearchAbstractDocument $document) {
$query = PhabricatorApplicationTransactionQuery::newQueryForObject($object);
if (!$query) {
return;
}
- $xactions = $query
+ $query
->setViewer($this->getViewer())
->withObjectPHIDs(array($object->getPHID()))
->withComments(true)
- ->needComments(true)
- ->execute();
+ ->needComments(true);
+
+ // See PHI719. Users occasionally create objects with huge numbers of
+ // comments, which can be slow to index. We handle this with reasonable
+ // grace: at time of writing, we can index a task with 100K comments in
+ // about 30 seconds. However, we do need to hold all the comments in
+ // memory in the AbstractDocument, so there's some practical limit to what
+ // we can realistically index.
+
+ // Since objects with more than 1,000 comments are not likely to be
+ // legitimate objects with actual discussion, index only the first
+ // thousand comments.
+
+ $query
+ ->setOrderVector(array('-id'))
+ ->setLimit(1000);
+
+ $xactions = $query->execute();
foreach ($xactions as $xaction) {
if (!$xaction->hasComment()) {
continue;
}
$comment = $xaction->getComment();
$document->addField(
PhabricatorSearchDocumentFieldType::FIELD_COMMENT,
$comment->getContent());
}
}
}

File Metadata

Mime Type
text/x-diff
Expires
Mon, Apr 28, 10:44 AM (16 h, 32 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
107936
Default Alt Text
(2 KB)

Event Timeline