diff --git a/code/solr/reindex/handlers/SolrReindexBase.php b/code/solr/reindex/handlers/SolrReindexBase.php index f127537..50822ac 100644 --- a/code/solr/reindex/handlers/SolrReindexBase.php +++ b/code/solr/reindex/handlers/SolrReindexBase.php @@ -5,6 +5,11 @@ namespace SilverStripe\FullTextSearch\Solr\Reindex\Handlers; use Psr\Log\LoggerInterface; use SilverStripe\FullTextSearch\Solr\Solr; use SilverStripe\FullTextSearch\Solr\SolrIndex; +use SilverStripe\FullTextSearch\Search\Variants\SearchVariant; +use SilverStripe\FullTextSearch\Search\Queries\SearchQuery; +use SilverStripe\ORM\DataObject; +use SilverStripe\ORM\DataList; +use SilverStripe\ORM\DB; /** * Base class for re-indexing of solr content @@ -17,7 +22,7 @@ abstract class SolrReindexBase implements SolrReindexHandler $this->processIndex($logger, $indexInstance, $batchSize, $taskName, $classes); } } - + /** * Process index for a single SolrIndex instance * @@ -163,7 +168,7 @@ abstract class SolrReindexBase implements SolrReindexHandler // This will slow down things a tiny bit, but it is done so that we don't timeout to the database during a reindex DB::query('SELECT 1'); - + $logger->info("Done"); } @@ -181,11 +186,11 @@ abstract class SolrReindexBase implements SolrReindexHandler protected function getRecordsInGroup(SolrIndex $indexInstance, $class, $groups, $group) { // Generate filtered list of local records - $baseClass = ClassInfo::baseDataClass($class); + $baseClass = DataObject::getSchema()->baseDataClass($class); $items = DataList::create($class) ->where(sprintf( '"%s"."ID" %% \'%d\' = \'%d\'', - $baseClass, + DataObject::getSchema()->tableName($baseClass), intval($groups), intval($group) )) diff --git a/code/solr/reindex/handlers/SolrReindexImmediateHandler.php b/code/solr/reindex/handlers/SolrReindexImmediateHandler.php index c0c48bb..e576045 100644 --- a/code/solr/reindex/handlers/SolrReindexImmediateHandler.php +++ b/code/solr/reindex/handlers/SolrReindexImmediateHandler.php @@ -4,6 +4,9 @@ namespace SilverStripe\FullTextSearch\Solr\Reindex\Handlers; use Psr\Log\LoggerInterface; use SilverStripe\FullTextSearch\Solr\SolrIndex; +use SilverStripe\FullTextSearch\Solr\Solr; +use SilverStripe\ORM\DB; +use SilverStripe\Control\Director; /** * Invokes an immediate reindex diff --git a/code/solr/reindex/handlers/SolrReindexQueuedHandler.php b/code/solr/reindex/handlers/SolrReindexQueuedHandler.php index 504f328..bda7024 100644 --- a/code/solr/reindex/handlers/SolrReindexQueuedHandler.php +++ b/code/solr/reindex/handlers/SolrReindexQueuedHandler.php @@ -4,11 +4,22 @@ namespace SilverStripe\FullTextSearch\Solr\Reindex\Handlers; use Psr\Log\LoggerInterface; use SilverStripe\FullTextSearch\Solr\SolrIndex; +use SilverStripe\ORM\DataObject; +use SilverStripe\ORM\DB; +use SilverStripe\Core\Convert; +use SilverStripe\Core\Injector\Injector; +use SilverStripe\FullTextSearch\Solr\Reindex\Jobs\SolrReindexQueuedJob; +use SilverStripe\FullTextSearch\Solr\Reindex\Jobs\SolrReindexGroupQueuedJob; +use SilverStripe\FullTextSearch\Search\Processors\SearchUpdateCommitJobProcessor; -if (!interface_exists('QueuedJob')) { +if (!interface_exists('SilverStripe\QueuedJobs\Services\QueuedJob')) { return; } +use SilverStripe\QueuedJobs\Services\QueuedJob; +use SilverStripe\QueuedJobs\Services\QueuedJobService; +use SilverStripe\QueuedJobs\DataObjects\QueuedJobDescriptor; + /** * Represents a queued task to start the reindex job */ @@ -19,7 +30,7 @@ class SolrReindexQueuedHandler extends SolrReindexBase */ protected function getQueuedJobService() { - return singleton('QueuedJobService'); + return singleton(QueuedJobService::class); } /** @@ -33,7 +44,7 @@ class SolrReindexQueuedHandler extends SolrReindexBase $clearable = array( // Paused jobs need to be discarded QueuedJob::STATUS_PAUSED, - + // These types would be automatically started QueuedJob::STATUS_NEW, QueuedJob::STATUS_WAIT, @@ -43,27 +54,28 @@ class SolrReindexQueuedHandler extends SolrReindexBase QueuedJob::STATUS_RUN ); DB::query(sprintf( - 'UPDATE "QueuedJobDescriptor" ' + 'UPDATE "%s" ' . ' SET "JobStatus" = \'%s\'' . ' WHERE "JobStatus" IN (\'%s\')' . ' AND "Implementation" = \'%s\'', + Convert::raw2sql(DataObject::getSchema()->tableName(QueuedJobDescriptor::class)), Convert::raw2sql(QueuedJob::STATUS_CANCELLED), implode("','", Convert::raw2sql($clearable)), Convert::raw2sql($type) )); - return DB::affectedRows(); + return DB::affected_rows(); } public function triggerReindex(LoggerInterface $logger, $batchSize, $taskName, $classes = null) { // Cancel existing jobs - $queues = $this->cancelExistingJobs('SolrReindexQueuedJob'); - $groups = $this->cancelExistingJobs('SolrReindexGroupQueuedJob'); + $queues = $this->cancelExistingJobs(SolrReindexQueuedJob::class); + $groups = $this->cancelExistingJobs(SolrReindexGroupQueuedJob::class); $logger->info("Cancelled {$queues} re-index tasks and {$groups} re-index groups"); // Although this class is used as a service (singleton) it may also be instantiated // as a queuedjob - $job = Injector::inst()->create('SolrReindexQueuedJob', $batchSize, $taskName, $classes); + $job = Injector::inst()->create(SolrReindexQueuedJob::class, $batchSize, $taskName, $classes); $this ->getQueuedJobService() ->queueJob($job); @@ -77,13 +89,13 @@ class SolrReindexQueuedHandler extends SolrReindexBase ) { // Trigger another job for this group $job = Injector::inst()->create( - 'SolrReindexGroupQueuedJob', + SolrReindexGroupQueuedJob::class, get_class($indexInstance), $state, $class, $groups, $group ); $this ->getQueuedJobService() ->queueJob($job); - + $title = $job->getTitle(); $logger->info("Queued {$title}"); } diff --git a/code/solr/reindex/jobs/SolrReindexGroupQueuedJob.php b/code/solr/reindex/jobs/SolrReindexGroupQueuedJob.php index 5f32355..0425eee 100644 --- a/code/solr/reindex/jobs/SolrReindexGroupQueuedJob.php +++ b/code/solr/reindex/jobs/SolrReindexGroupQueuedJob.php @@ -1,6 +1,8 @@ get('SearchLogFactory'); + return Injector::inst()->get(SearchLogFactory::class); } /** @@ -103,7 +111,7 @@ abstract class SolrReindexQueuedJobBase implements QueuedJob */ protected function getHandler() { - return Injector::inst()->get('SolrReindexHandler'); + return Injector::inst()->get(SolrReindexHandler::class); } public function jobFinished()