algoliasearch-client-php icon indicating copy to clipboard operation
algoliasearch-client-php copied to clipboard

[bug]: BC Break starting v4.10.0 for batch operations in SearchClient

Open TalkMarc opened this issue 11 months ago • 2 comments

Description

The following commit changed the method signature of multiple SearchClient methods, causing existing implementations to break when updating to algoliasearch-client-php v4.10.0 or higher: https://github.com/algolia/algoliasearch-client-php/commit/50bc69c75c379f5fb626ac014b9a340d469987b5#diff-54160c7bd8737a7321b4384faa37eda8798b45865a44cab860fb736b08a60057R2945-R2962

Since the commit adds a new parameter in the middle of the established ones, existing code calling these methods with requestOptions (and possibly waitForTasks) will break as the arguments are now misaligned. Missing type checks furthermore causes this to surface as an obscure error (see log output). Only implementations that explicitly used named arguments aren't affected.

The method doc-block also erroneously hints the new batchSize parameter type to be an array.

Minor releases shouldn't contain BC-breaking changes for publicly supported methods. If a new parameter is added, it should be appended at the end as to not break existing method calls for dependents.

Client

Search

Version

4.10, 4.12

Relevant log output

In SearchClient.php line 3112:
                                         
  [Error]                                
  Cannot use a scalar value as an array  
                                         

Exception trace:
  at /srv/sylius/vendor/algolia/algoliasearch-client-php/lib/Api/SearchClient.php:3112
 Algolia\AlgoliaSearch\Api\SearchClient->sendRequest() at /srv/sylius/vendor/algolia/algoliasearch-client-php/lib/Api/SearchClient.php:355
 Algolia\AlgoliaSearch\Api\SearchClient->batch() at /srv/sylius/vendor/algolia/algoliasearch-client-php/lib/Api/SearchClient.php:3028
 Algolia\AlgoliaSearch\Api\SearchClient->chunkedBatch() at /srv/sylius/vendor/algolia/algoliasearch-client-php/lib/Api/SearchClient.php:2961
 Algolia\AlgoliaSearch\Api\SearchClient->saveObjects() at /srv/sylius/src/Client/AlgoliaIndexClientV4.php:27

TalkMarc avatar Jan 08 '25 18:01 TalkMarc

This change broke our catch up indexing script. As it stands right now, we've fixed it by type hinting arguments in various functions

gimmer avatar Jan 17 '25 15:01 gimmer

The optional arguments in saveObjects() were shifted around. This is a very questionable practice in a patch release indeed.

alcohol avatar Feb 14 '25 10:02 alcohol