Topic on Extension talk:CirrusSearch

UpdateSearchIndexConfig.php not working?

3
Summary by DCausse (WMF)

The root cause was not using the default node.name or cluster.name in /etc/elasticsearch/elasticsearch.yml

Gamebrew (talkcontribs)

I couldn't able to figure out why the UpdateSearchIndexConfig.php isn't working on the latest Mediawiki 1.39. Can someone able to help me a bit?


Error Log:

php /extensions/CirrusSearch/maintenance/UpdateSearchIndexConfig.php


Updating cluster ...

indexing namespaces...

mw_cirrus_metastore missing, creating new metastore index.

Creating metastore index... mw_cirrus_metastore_first   Scanning available plugins...none

Elastica\Exception\ResponseException from line 178 of /public/extensions/Elastica/vendor/ruflin/elastica/src/Transport/Http.php:

#0 /public/extensions/Elastica/vendor/ruflin/elastica/src/Request.php(178): Elastica\Transport\Http->exec()

#1 /public/extensions/Elastica/vendor/ruflin/elastica/src/Client.php(513): Elastica\Request->send()

#2 /public/extensions/Elastica/vendor/ruflin/elastica/src/Index.php(655): Elastica\Client->request()

#3 /public/extensions/CirrusSearch/includes/MetaStore/MetaStoreIndex.php(201): Elastica\Index->request()

#4 /public/extensions/CirrusSearch/includes/MetaStore/MetaStoreIndex.php(139): CirrusSearch\MetaStore\MetaStoreIndex->createNewIndex()

#5 /public/extensions/CirrusSearch/includes/Maintenance/Maintenance.php(227): CirrusSearch\MetaStore\MetaStoreIndex->createIfNecessary()

#6 /public/extensions/CirrusSearch/maintenance/IndexNamespaces.php(40): CirrusSearch\Maintenance\Maintenance->maybeCreateMetastore()

#7 /public/extensions/CirrusSearch/maintenance/UpdateSearchIndexConfig.php(72): CirrusSearch\Maintenance\IndexNamespaces->execute()

#8 /public/maintenance/includes/MaintenanceRunner.php(309): CirrusSearch\Maintenance\UpdateSearchIndexConfig->execute()

#9 /public/maintenance/doMaintenance.php(85): MediaWiki\Maintenance\MaintenanceRunner->run()

#10 /public/extensions/CirrusSearch/maintenance/UpdateSearchIndexConfig.php(117): require_once('/home/nginx/dom...')

#11 {main}


My Mediawiki Info:

Product Version
Mediawiki 1.39.1
PHP 7.4.33 (fpm-fcgi)
MariaDB 10.3.37-MariaDB
ICU 62.2
Pygments 2.11.2
Elasticsearch 7.10.2
CirrusSearch 6.5.4 (e15ac38) 06:42, January 10, 2023 GPL-2.0-or-later
Elastica 6.2.0 (1baee3b) 06:13, December 4, 2022


Elastic is working fine at my end.

curl -XGET 'localhost:9200'

{

  "name" : "node",

  "cluster_name" : "nodecluster",

  "cluster_uuid" : "_na_",

  "version" : {

    "number" : "7.10.2",

    "build_flavor" : "default",

    "build_type" : "rpm",

    "build_hash" : "747e1cc71def077253878a59143c1f785afa92b9",

    "build_date" : "2021-01-13T00:42:12.435326Z",

    "build_snapshot" : false,

    "lucene_version" : "8.7.0",

    "minimum_wire_compatibility_version" : "6.8.0",

    "minimum_index_compatibility_version" : "6.0.0-beta1"

  },

  "tagline" : "You Know, for Search"

}

DCausse (WMF) (talkcontribs)

Creating the mw_cirrus_metastore index seems to be failing, the stack indicates that an error was detected in the elasticsearch response body, so elasticsearch did receive the request but refused to process it.

Unfortunately the exception does not tell us more, so you might have to investigate. Elasticsearch logs might possibly contain some indication. Another way might be to hack the include/MetaStore/MetaStoreIndex.php script with something like (around line 199 in the createNewIndex method):

try {
   $index->request(
      '',
      \Elastica\Request::PUT,
      $this->buildIndexConfiguration(),
      [
         'master_timeout' => $this->getMasterTimeout(),
      ]
   );
} catch ( \Elastica\Exception\ResponseException $e ) {
   $this->log( print_r( $e->getResponse()->getData(), true ) );
   throw $e;
}

Please let us know if you find the root cause.

Thanks!

Gamebrew (talkcontribs)

The root cause was not using the default node.name or cluster.name in /etc/elasticsearch/elasticsearch.yml

It's all good now. Thanks.