mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-26 00:32:42 +01:00
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:
parent
5c73c169fd
commit
cd14194a32
1 changed files with 22 additions and 9 deletions
|
@ -203,16 +203,29 @@ abstract class PhabricatorApplicationTransactionQuery
|
|||
$xaction = $this->getTemplateApplicationTransaction();
|
||||
$comment = $xaction->getApplicationTransactionCommentObject();
|
||||
|
||||
if ($this->withComments) {
|
||||
$joins[] = qsprintf(
|
||||
$conn,
|
||||
'JOIN %T c ON x.phid = c.transactionPHID',
|
||||
$comment->getTableName());
|
||||
// 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 {
|
||||
$joins[] = qsprintf(
|
||||
$conn,
|
||||
'LEFT JOIN %T c ON x.phid = c.transactionPHID',
|
||||
$comment->getTableName());
|
||||
if ($this->withComments) {
|
||||
$joins[] = qsprintf(
|
||||
$conn,
|
||||
'JOIN %T c ON x.phid = c.transactionPHID',
|
||||
$comment->getTableName());
|
||||
} else {
|
||||
$joins[] = qsprintf(
|
||||
$conn,
|
||||
'LEFT JOIN %T c ON x.phid = c.transactionPHID',
|
||||
$comment->getTableName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue