Page MenuHomePhabricator

D19503.diff
No OneTemporary

D19503.diff

diff --git a/src/applications/transactions/engineextension/PhabricatorTransactionsFulltextEngineExtension.php b/src/applications/transactions/engineextension/PhabricatorTransactionsFulltextEngineExtension.php
--- a/src/applications/transactions/engineextension/PhabricatorTransactionsFulltextEngineExtension.php
+++ b/src/applications/transactions/engineextension/PhabricatorTransactionsFulltextEngineExtension.php
@@ -22,12 +22,28 @@
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()) {

File Metadata

Mime Type
text/plain
Expires
Mon, Oct 28, 8:07 PM (2 w, 6 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6721323
Default Alt Text
D19503.diff (1 KB)

Event Timeline