Issue
Recent Search API Solr 8.x-1.x releases (https://www.drupal.org/project/search_api_solr/releases/8.x-1.8 and higher) broke compatibility with older versions of the Acquia Search module. The symptom is a WSOD or other error page when viewing the /admin/config/search/search_api page on your site, and/or this error showing up in site logs:
ArgumentCountError: Too few arguments to function Solarium\Core\Client\Client::__construct(), 0 passed in [REDACTED]/acquia_connector/acquia_search/src/Plugin/SolrConnector/SearchApiSolrAcquiaConnector.php ...
This has been fixed in recent Acquia module releases; read on for the steps to fix.
Resolution
To fix this, you will need to either:
- (A) Roll back the Search API Solr module version to 8.x-1.7
- Or... (B) keep Search API Solr 8.x-1.10 (or higher) and follow the below instructions.
Here are the instructions for option (B):
- Before you start: we always recommend creating a backup before you do this or any other change to your site.
- You will need to change your code using composer:
composer require drupal/acquia_connector:^3 drupal/acquia_search:^2
- Look out for any composer warnings resulting from the above. For example, if your site's `composer.json` includes a patch for Solarium, you may need to remove it.
- Deploy your code to Acquia Cloud.
- Run database updates. For this we recommend using drush:
- SSH into your Acquia Cloud environment where you deployed your code.
- Run the drush updb --uri=[domain] command, editing the [domain] part to match your site's URL.
- If you have various Drupal multisite instances, you may need to run database updates once for each instance.
If you have any issues, please report any errors/screenshots/etc that could be useful to keep debugging.
Cause
The recent Search API Solr 8.x-1.10 release introduced support for both Drupal 9 and for version 6 of the 3rd party library Solarium which is used by it and the Acquia Search modules to connect to the Acquia-hosted Solr backend. The Solarium API changes required the Acquia module code to also be updated to match.