Merge pull request #255 from open-sausages/pulls/3/disable-indexing-on-file-migration

Disable indexing on file migration
This commit is contained in:
Dylan Wagstaff 2019-05-31 10:35:49 +12:00 committed by GitHub
commit e2eb3f6367
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 66 additions and 1 deletions

View File

@ -13,3 +13,7 @@ SilverStripe\Core\Injector\Injector:
SilverStripe\FullTextSearch\Search\Queries\SearchQuery:
calls:
- [ setHandler, [ %$SilverStripe\FullTextSearch\Search\Adapters\SolrSearchAdapter ]]
SilverStripe\Dev\Tasks\MigrateFileTask:
extensions:
- SilverStripe\FullTextSearch\Search\Extensions\DisableIndexingOnFileMigration

View File

@ -39,7 +39,7 @@ configured and running) that each connector deals with itself, in a way best sui
If you are running on a Linux-based system, you can get up and running quickly with the quickstart script, like so:
```bash
composer require silverstripe/fulltextsearch && vendor/bin/fts_quickstart
composer require silverstripe/fulltextsearch --prefer-source && vendor/bin/fts_quickstart
```
This will:

View File

@ -0,0 +1,37 @@
<?php
namespace SilverStripe\FullTextSearch\Search\Extensions;
use Psr\Log\LoggerInterface;
use SilverStripe\Core\Extension;
use SilverStripe\FullTextSearch\Search\Updaters\SearchUpdater;
/**
* This extension can be applied to `SilverStripe\Dev\Tasks\MigrateFileTask` to avoid constantly re-indexing files
* while the file migration is running.
*/
class DisableIndexingOnFileMigration extends Extension
{
private static $dependencies = [
'logger' => '%$' . LoggerInterface::class . '.quiet',
];
/** @var LoggerInterface */
private $logger;
/**
* @param LoggerInterface $logger
*/
public function setLogger(LoggerInterface $logger)
{
$this->logger = $logger;
}
public function preFileMigration()
{
if (SearchUpdater::config()->get('enabled')) {
$this->logger->info('Disabling fulltext search re-indexing for this request only');
SearchUpdater::config()->set('enabled', false);
}
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace SilverStripe\FullTextSearch\Tests\SolrReindexTest;
use SilverStripe\Core\Injector\Injector;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\FullTextSearch\Search\Extensions\DisableIndexingOnFileMigration;
use SilverStripe\FullTextSearch\Search\Updaters\SearchUpdater;
/**
* Logger for recording messages for later retrieval
*/
class DisableIndexingOnFileMigrationTest extends SapphireTest
{
public function testPreFileMigration()
{
$this->assertTrue(SearchUpdater::config()->get('enabled'));
Injector::inst()->get(DisableIndexingOnFileMigration::class)->preFileMigration();
$this->assertFalse(SearchUpdater::config()->get('enabled'));
}
}