diff --git a/core/modules/migrate_drupal/config/migrate.migration.d6_search_settings.yml b/core/modules/migrate_drupal/config/migrate.migration.d6_search_settings.yml
index 7ea5c20..348658f 100644
--- a/core/modules/migrate_drupal/config/migrate.migration.d6_search_settings.yml
+++ b/core/modules/migrate_drupal/config/migrate.migration.d6_search_settings.yml
@@ -4,13 +4,11 @@ source:
variables:
- minimum_word_size
- overlap_cjk
- - search_cron_limit
- search_tag_weights
- search_and_or_limit
process:
'index:minimum_word_size': minimum_word_size
'index:overlap_cjk': overlap_cjk
- 'index:cron_limit': search_cron_limit
destination:
plugin: d8_config
config_name: search.settings
diff --git a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateSearchConfigsTest.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateSearchConfigsTest.php
index 414296f..c71930a 100644
--- a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateSearchConfigsTest.php
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateSearchConfigsTest.php
@@ -41,6 +41,5 @@ public function testSearchSettings() {
$config = \Drupal::config('search.settings');
$this->assertIdentical($config->get('index.minimum_word_size'), 3);
$this->assertIdentical($config->get('index.overlap_cjk'), TRUE);
- $this->assertIdentical($config->get('index.cron_limit'), 100);
}
}
diff --git a/core/modules/node/config/schema/node.schema.yml b/core/modules/node/config/schema/node.schema.yml
index 506049b..7aa1aa6 100644
--- a/core/modules/node/config/schema/node.schema.yml
+++ b/core/modules/node/config/schema/node.schema.yml
@@ -87,3 +87,6 @@ search.plugin.node_search:
sequence:
- type: integer
label: 'Influence'
+ cron_limit:
+ type: integer
+ label: 'Number of items to index per cron run'
diff --git a/core/modules/node/config/search.page.node_search.yml b/core/modules/node/config/search.page.node_search.yml
index 597f4e3..92ef4e1 100644
--- a/core/modules/node/config/search.page.node_search.yml
+++ b/core/modules/node/config/search.page.node_search.yml
@@ -8,3 +8,4 @@ weight: -10
plugin: node_search
configuration:
rankings: { }
+ cron_limit: 100
diff --git a/core/modules/node/lib/Drupal/node/Plugin/Search/NodeSearch.php b/core/modules/node/lib/Drupal/node/Plugin/Search/NodeSearch.php
index fb0538a..353f36f 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/Search/NodeSearch.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/Search/NodeSearch.php
@@ -7,6 +7,7 @@
namespace Drupal\node\Plugin\Search;
+use Drupal\Component\Utility\MapArray;
use Drupal\Core\Config\Config;
use Drupal\Core\Database\Connection;
use Drupal\Core\Database\Query\SelectExtender;
@@ -291,7 +292,7 @@ protected function addNodeRankings(SelectExtender $query) {
* {@inheritdoc}
*/
public function updateIndex() {
- $limit = (int) $this->searchSettings->get('index.cron_limit');
+ $limit = (int) $this->configuration['cron_limit'];
$result = $this->database->queryRange("SELECT DISTINCT n.nid, d.reindex FROM {node} n LEFT JOIN {search_dataset} d ON d.type = :type AND d.sid = n.nid WHERE d.sid IS NULL OR d.reindex <> 0 ORDER BY d.reindex ASC, n.nid ASC", 0, $limit, array(':type' => $this->getPluginId()), array('target' => 'slave'));
$nids = $result->fetchCol();
@@ -540,6 +541,7 @@ protected function getRankings() {
public function defaultConfiguration() {
$configuration = array(
'rankings' => array(),
+ 'cron_limit' => 100,
);
return $configuration;
}
@@ -548,6 +550,20 @@ public function defaultConfiguration() {
* {@inheritdoc}
*/
public function buildConfigurationForm(array $form, array &$form_state) {
+
+ // Indexing throttle:
+ $form['indexing_throttle'] = array(
+ '#type' => 'details',
+ '#title' => $this->t('Indexing throttle')
+ );
+ $form['indexing_throttle']['cron_limit'] = array(
+ '#type' => 'select',
+ '#title' => $this->t('Number of items to index per cron run'),
+ '#default_value' => $this->configuration['cron_limit'],
+ '#options' => MapArray::copyValuesToKeys(array(10, 20, 50, 100, 200, 500)),
+ '#description' => $this->t('The maximum number of items indexed by this search page in each pass of a cron maintenance task. If necessary, reduce the number of items to prevent timeouts and memory errors while indexing.', array('@cron' => url('admin/reports/status'))),
+ );
+
// Output form for defining rank factor weights.
$form['content_ranking'] = array(
'#type' => 'details',
@@ -583,6 +599,7 @@ public function submitConfigurationForm(array &$form, array &$form_state) {
unset($this->configuration['rankings'][$var]);
}
}
+ $this->configuration['cron_limit'] = $form_state['values']['cron_limit'];
}
}
diff --git a/core/modules/search/config/schema/search.schema.yml b/core/modules/search/config/schema/search.schema.yml
index 68e6877..e1ef850 100644
--- a/core/modules/search/config/schema/search.schema.yml
+++ b/core/modules/search/config/schema/search.schema.yml
@@ -14,9 +14,6 @@ search.settings:
type: mapping
label: 'Indexing settings'
mapping:
- cron_limit:
- type: integer
- label: 'Number of items to index per cron run'
overlap_cjk:
type: boolean
label: 'Simple CJK handling'
diff --git a/core/modules/search/config/search.settings.yml b/core/modules/search/config/search.settings.yml
index 09c09cb..1e73038 100644
--- a/core/modules/search/config/search.settings.yml
+++ b/core/modules/search/config/search.settings.yml
@@ -1,7 +1,6 @@
and_or_limit: 7
default_page: node_search
index:
- cron_limit: 100
overlap_cjk: true
minimum_word_size: 3
tag_weights:
diff --git a/core/modules/search/lib/Drupal/search/Plugin/SearchIndexingInterface.php b/core/modules/search/lib/Drupal/search/Plugin/SearchIndexingInterface.php
index 26edef5..0b137d4 100644
--- a/core/modules/search/lib/Drupal/search/Plugin/SearchIndexingInterface.php
+++ b/core/modules/search/lib/Drupal/search/Plugin/SearchIndexingInterface.php
@@ -34,10 +34,10 @@
* When implementing this method, your module should index content items that
* were modified or added since the last run. PHP has a time limit
* for cron, though, so it is advisable to limit how many items you index
- * per run using config('search.settings')->get('index.cron_limit'). Also,
- * since the cron run could time out and abort in the middle of your run, you
- * should update any needed internal bookkeeping on when items have last
- * been indexed as you go rather than waiting to the end of indexing.
+ * per run (see the cron_limit setting on NodeSearch). Also, since the cron
+ * run could time out and abort in the middle of your run, you should update
+ * any needed internal bookkeeping on when items have last been indexed as you
+ * go rather than waiting to the end of indexing.
*/
public function updateIndex();
diff --git a/core/modules/search/lib/Drupal/search/SearchPageListController.php b/core/modules/search/lib/Drupal/search/SearchPageListController.php
index 61b17d9..377d713 100644
--- a/core/modules/search/lib/Drupal/search/SearchPageListController.php
+++ b/core/modules/search/lib/Drupal/search/SearchPageListController.php
@@ -7,7 +7,6 @@
namespace Drupal\search;
-use Drupal\Component\Utility\MapArray;
use Drupal\Core\Config\ConfigFactory;
use Drupal\Core\Config\Context\ContextInterface;
use Drupal\Core\Config\Entity\DraggableListController;
@@ -175,20 +174,6 @@ public function buildForm(array $form, array &$form_state) {
'#submit' => array(array($this, 'searchAdminReindexSubmit')),
);
- $items = MapArray::copyValuesToKeys(array(10, 20, 50, 100, 200, 500));
-
- // Indexing throttle:
- $form['indexing_throttle'] = array(
- '#type' => 'details',
- '#title' => $this->t('Indexing throttle')
- );
- $form['indexing_throttle']['cron_limit'] = array(
- '#type' => 'select',
- '#title' => $this->t('Number of items to index per cron run'),
- '#default_value' => $search_settings->get('index.cron_limit'),
- '#options' => $items,
- '#description' => $this->t('The maximum number of items indexed in each pass of a cron maintenance task. If necessary, reduce the number of items to prevent timeouts and memory errors while indexing.', array('@cron' => url('admin/reports/status'))),
- );
// Indexing settings:
$form['indexing_settings'] = array(
'#type' => 'details',
@@ -306,9 +291,6 @@ public function submitForm(array &$form, array &$form_state) {
search_reindex();
}
- $search_settings
- ->set('index.cron_limit', $form_state['values']['cron_limit'])
- ->save();
drupal_set_message($this->t('The configuration options have been saved.'));
}
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchMultilingualEntityTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchMultilingualEntityTest.php
index 282b7ab..fe86451 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchMultilingualEntityTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchMultilingualEntityTest.php
@@ -99,7 +99,7 @@ function setUp() {
*/
function testIndexingThrottle() {
// Index only 4 items per cron run.
- \Drupal::config('search.settings')->set('index.cron_limit', 4)->save();
+ \Drupal::config('search.page.node_search')->set('cron_limit', 4)->save();
// Update the index. This does the initial processing.
$plugin = $this->container->get('plugin.manager.search')->createInstance('node_search');
$plugin->updateIndex();