mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-29 00:40:57 +01:00
29a3cd5121
Summary: Ref T11922. After updating to HEAD of `master`, you need to manually rebuild the index. We don't do this during `bin/storage upgrade` because it can take a very long time (`secure.phabricator.com` took roughly an hour) and can happen while Phabricator is running. However, if we don't warn users about this they'll just get a broken index unless they go read the changelog (or file an issue, then we tell them to go read the changelog). This adds a very simple table for notes to administrators so we can write a "you need to go rebuild the index" note, then adds one. Administrators clear the note by completing the activity and running `bin/config done reindex`. This isn't automatic because there are various strategies you can use to approach the issue, which I'll discuss in greater detail in the linked documentation. Also, fix an issue where `bin/storage upgrade --apply <patch>` could try to re-mark an already-applied patch as applied. Test Plan: - Ran storage ugrades. - Got instructions to rebuild search index. - Cleared instructions with `bin/config done reindex`. Reviewers: chad Reviewed By: chad Subscribers: avivey Maniphest Tasks: T11922 Differential Revision: https://secure.phabricator.com/D16965
26 lines
817 B
PHP
26 lines
817 B
PHP
<?php
|
|
|
|
$search_engine = PhabricatorFulltextStorageEngine::loadEngine();
|
|
$use_mysql = ($search_engine instanceof PhabricatorMySQLFulltextStorageEngine);
|
|
|
|
if ($use_mysql) {
|
|
$field = new PhabricatorSearchDocumentField();
|
|
$conn = $field->establishConnection('r');
|
|
|
|
// We're only going to require this if the index isn't empty: if you're on a
|
|
// fresh install, you don't have to do anything.
|
|
$any_documents = queryfx_one(
|
|
$conn,
|
|
'SELECT * FROM %T LIMIT 1',
|
|
$field->getTableName());
|
|
|
|
if ($any_documents) {
|
|
try {
|
|
id(new PhabricatorConfigManualActivity())
|
|
->setActivityType(PhabricatorConfigManualActivity::TYPE_REINDEX)
|
|
->save();
|
|
} catch (AphrontDuplicateKeyQueryException $ex) {
|
|
// If we've already noted that this activity is required, just move on.
|
|
}
|
|
}
|
|
}
|