1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-15 10:00:55 +01:00

(stable) Fix transaction queries using withComments() for transactions with no comments

Summary:
See <https://discourse.phabricator-community.org/t/daemons-tasks-crashing-in-a-loop-during-reindex/506/1>. Some object types (for example, Passphrase Credentials) support indexing but not commenting.

Make `withComments(...)` work properly if the transaction type does not support comments.

Test Plan:
Indexed a credential (no comments) and a revision (comments) with `bin/search index --trace ...`.

Before, credential fataled.

After, credetial succeeds, and skips the transaction query.

Before and after, the revision queries the transaction table.

Reviewers: amckinley

Reviewed By: amckinley

Differential Revision: https://secure.phabricator.com/D18667
This commit is contained in:
epriestley 2017-10-02 07:21:38 -07:00
parent ce9e30b020
commit 8297f7a182

View file

@ -203,6 +203,18 @@ abstract class PhabricatorApplicationTransactionQuery
$xaction = $this->getTemplateApplicationTransaction();
$comment = $xaction->getApplicationTransactionCommentObject();
// Not every transaction type has comments, so we may be able to
// implement this constraint trivially.
if (!$comment) {
if ($this->withComments) {
throw new PhabricatorEmptyQueryException();
} else {
// If we're querying for transactions with no comments and the
// transaction type does not support comments, we don't need to
// do anything.
}
} else {
if ($this->withComments) {
$joins[] = qsprintf(
$conn,
@ -215,6 +227,7 @@ abstract class PhabricatorApplicationTransactionQuery
$comment->getTableName());
}
}
}
return $joins;
}