Meilisearch-laravel-scout: Paramètres incorrects pour MeiliSearch\Exceptions\HTTPRequestException

Créé le 10 août 2020  ·  14Commentaires  ·  Source: meilisearch/meilisearch-laravel-scout

J'ai commencé à recevoir cette exception après la mise à niveau vers la dernière version hier de ce package.

Trace de la pile:

[2020-08-10 15:22:11] production.ERROR: Wrong parameters for MeiliSearch\Exceptions\HTTPRequestException([string $message [, long $code [, Throwable $previous = NULL]]]) {"exception":"[object] (Error(code: 0): Wrong parameters for MeiliSearch\\Exceptions\\HTTPRequestException([string $message [, long $code [, Throwable $previous = NULL]]]) at /home/redacted/vendor/meilisearch/meilisearch-php/src/Exceptions/HTTPRequestException.php:20)
[stacktrace]
#0 /home/redacted/vendor/meilisearch/meilisearch-php/src/Exceptions/HTTPRequestException.php(20): Exception->__construct()
#1 /home/redacted/vendor/meilisearch/meilisearch-php/src/Http/Client.php(182): MeiliSearch\\Exceptions\\HTTPRequestException->__construct()
#2 /home/redacted/vendor/meilisearch/meilisearch-php/src/Http/Client.php(165): MeiliSearch\\Http\\Client->parseResponse()
#3 /home/redacted/vendor/meilisearch/meilisearch-php/src/Http/Client.php(101): MeiliSearch\\Http\\Client->execute()
#4 /home/redacted/vendor/meilisearch/meilisearch-php/src/Endpoints/Delegates/HandlesDocuments.php(29): MeiliSearch\\Http\\Client->post()
#5 /home/redacted/vendor/meilisearch/meilisearch-laravel-scout/src/Engines/MeilisearchEngine.php(59): MeiliSearch\\Endpoints\\Indexes->addDocuments()
#6 /home/redacted/vendor/laravel/scout/src/Jobs/MakeSearchable.php(42): Meilisearch\\Scout\\Engines\\MeilisearchEngine->update()
#7 [internal function]: Laravel\\Scout\\Jobs\\MakeSearchable->handle()
Laravel integration

Tous les 14 commentaires

Même problème ici, après la mise à jour de ce package, j'avais besoin de mettre à jour cet exemple de code tiré du Readme comme ci-dessous =>

Book::search('prince', function (Index $meilisearch, $query, $options) {
    $options['filters'] = 'author="Antoine de Saint-Exupéry"';

    return $meilisearch->search($query, $options);
})->take(3)->get();

À

Book::search('prince', function (Indexes $meilisearch, $query, $options) {
    $options['filters'] = 'author="Antoine de Saint-Exupéry"';

    return $meilisearch->search($query, $options);
})->take(3)->get();

Voir le paramètre $meilisearch , a été tapé hint à Meilisearch\Index auparavant, mais maintenant nous devons le taper à MeiliSearch\Endpoints\Indexes .

Et puis j'ai ce problème :

[2020-08-11 15:56:50] local.ERROR: Wrong parameters for MeiliSearch\Exceptions\HTTPRequestException([string $message [, long $code [, Throwable $previous = NULL]]]) {"userId":2,"exception":"[object] (Error(code: 0): Wrong parameters for MeiliSearch\\Exceptions\\HTTPRequestException([string $message [, long $code [, Throwable $previous = NULL]]]) at /var/www/html/vendor/meilisearch/meilisearch-php/src/Exceptions/HTTPRequestException.php:20)
[stacktrace]
#0 /var/www/html/vendor/meilisearch/meilisearch-php/src/Exceptions/HTTPRequestException.php(20): Exception->__construct(NULL, 405, NULL)
#1 /var/www/html/vendor/meilisearch/meilisearch-php/src/Http/Client.php(182): MeiliSearch\\Exceptions\\HTTPRequestException->__construct(405, NULL)
#2 /var/www/html/vendor/meilisearch/meilisearch-php/src/Http/Client.php(165): MeiliSearch\\Http\\Client->parseResponse(Object(GuzzleHttp\\Psr7\\Response))
#3 /var/www/html/vendor/meilisearch/meilisearch-php/src/Http/Client.php(101): MeiliSearch\\Http\\Client->execute(Object(GuzzleHttp\\Psr7\\Request))
#4 /var/www/html/vendor/meilisearch/meilisearch-php/src/Endpoints/Indexes.php(127): MeiliSearch\\Http\\Client->post('/indexes/compan...', Array)
#5 /var/www/html/app/Models/Company.php(394): MeiliSearch\\Endpoints\\Indexes->search('oj', Array)
#6 [internal function]: App\\Models\\Company::App\\Models\\{closure}(Object(MeiliSearch\\Endpoints\\Indexes), 'oj', Array)
#7 /var/www/html/vendor/meilisearch/meilisearch-laravel-scout/src/Engines/MeilisearchEngine.php(128): call_user_func(Object(Closure), Object(MeiliSearch\\Endpoints\\Indexes), 'oj', Array)
#8 /var/www/html/vendor/meilisearch/meilisearch-laravel-scout/src/Engines/MeilisearchEngine.php(92): Meilisearch\\Scout\\Engines\\MeilisearchEngine->performSearch(Object(Laravel\\Scout\\Builder), Array)
#9 /var/www/html/vendor/laravel/scout/src/Builder.php(220): Meilisearch\\Scout\\Engines\\MeilisearchEngine->search(Object(Laravel\\Scout\\Builder))
#10 /var/www/html/app/Models/Company.php(396): Laravel\\Scout\\Builder->raw()
#11 /var/www/html/app/Http/Livewire/Admin/ShowCompanies.php(171): App\\Models\\Company::searchBy('oj', Array)
#12 /var/www/html/vendor/livewire/livewire/src/Component.php(99): App\\Http\\Livewire\\Admin\\ShowCompanies->render()
#13 /var/www/html/vendor/livewire/livewire/src/Connection/ConnectionHandler.php(29): Livewire\\Component->output(NULL)
#14 /var/www/html/vendor/livewire/livewire/src/Controllers/HttpConnectionHandler.php(13): Livewire\\Connection\\ConnectionHandler->handle(Array)
#15 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(48): Livewire\\Controllers\\HttpConnectionHandler->__invoke('admin.show-comp...')
#16 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(239): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(Livewire\\Controllers\\HttpConnectionHandler), '__invoke')
#17 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(196): Illuminate\\Routing\\Route->runController()
#18 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(685): Illuminate\\Routing\\Route->run()
#19 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#20 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#21 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#22 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(77): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#23 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#24 /var/www/html/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#25 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#26 /var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#27 /var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(62): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest(Object(Illuminate\\Http\\Request), Object(Illuminate\\Session\\Store), Object(Closure))
#28 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#29 /var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#30 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#31 /var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#32 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#33 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#34 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(687): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#35 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(662): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#36 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(628): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
#37 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(617): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#38 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(165): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#39 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
#40 /var/www/html/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php(65): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#41 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Barryvdh\\Debugbar\\Middleware\\InjectDebugbar->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#42 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#43 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#44 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(63): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#45 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#46 /var/www/html/vendor/fruitcake/laravel-cors/src/HandleCors.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#47 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Fruitcake\\Cors\\HandleCors->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#48 /var/www/html/vendor/fideloper/proxy/src/TrustProxies.php(57): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#49 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Fideloper\\Proxy\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#50 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#51 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(140): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#52 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(109): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
#53 /var/www/html/public/index.php(55): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#54 {main}
"} 

Bonjour gars!

Désolé, la version précédente aurait dû être une nouvelle version mineure ( v0.11.0 au lieu de v0.10.7 ). On ne s'était pas rendu compte que c'était en train de casser ! Désolé pour ça!

@YannickYayo , merci pour le correctif ! Ce PR #38 tient compte de ce que vous avez dit ! C'est assez pour vous ou j'ai raté quelque chose ? ??

@dmyers , le correctif de @YannickYayo résout-il votre problème ?

@dmyers et @YannickYayo (et @shokme). Autre question : pensez-vous que nous devrions supprimer le v0.10.7 de Packagist et de GitHub et créer un nouveau v0.11.0 ? Ou simplement créer un nouveau v0.11.0 est-il suffisant ?

Oh j'ai oublié de le mentionner, mais mon petit correctif ne résout pas le problème avec Wrong parameters for MeiliSearch\Exceptions\HTTPRequestException... :(
Je vais essayer de le déboguer et de fournir des commentaires.

À mon avis, créer un nouveau v0.11.0 est suffisant, vous pouvez peut-être écrire un avertissement sur le v0.10.7 .

Oui, j'avais déjà fait le même changement que @YannickYayo avec le typehint pour l'index et cette exception s'est produite par la suite.

Désolé fermé accidentellement par erreur de clic.

D'accord avec @Yannick sur la gestion des versions, mais je ne connais pas vraiment grand chose à propos de semver ou des meilleures pratiques sur ce sujet, pour être honnête, la plupart de mes packages ne sont utilisés que par moi. ??

Au fait, cela ne sera pas simplement corrigé avec #38 car cette exception est causée par une modification récente de la dépendance PHP MeiliSearch en amont qui a ajouté la compatibilité avec v0.13 .

https://github.com/meilisearch/meilisearch-laravel-scout/releases/tag/v0.10.7

Mettre à jour :

J'utilisais la version 0.12 du moteur de recherche Meilisearch, après l'avoir mis à niveau sur docker vers le 0.13 et réindexé mes documents, cela résout le problème pour moi !

Ok désolé les gars, je suis allé trop vite, je comprends que mon PR ne répare rien sauf une petite partie du README 😅

Alors maintenant @YannickYayo , je comprends que votre problème est résolu, n'est-ce pas ? J'ai mis à jour le README en #38 selon ce que vous avez dit : meilisearch-laravel-scout v0.10.7 n'est pas compatible avec MeiliSearch v0.12.0 et avant

@dmyers , je comprends que votre problème est toujours là malgré :

  • le changement de Index en Indexes
  • la mise à jour de votre instance MeiliSearch (v0.13.0)

Droit?

@curquiza Oui, l'utilisation de Meilisearch v0.13.0 résolu mon problème :+1 :

J'utilise la version v0.13.0 avant d'ouvrir ce problème.

Je reçois toujours cette erreur à ce jour, mais cela semble être causé par le SDK PHP si mon instance de serveur de recherche est en panne, ce qui se produit à des moments aléatoires et que la seule solution consiste à le redémarrer, mais ce n'est toujours pas idéal que le SDK PHP officiel de Meilisearch ne gère pas le code d'état d'exception approprié pour ce cas.

Je pense que la cause première est une mauvaise utilisation de l'extension de classe Exception dans la classe HTTPRequestException qui échange de manière incorrecte l'ordre des arguments de la classe Exception dans PHP stdlib.

Ici vous pouvez voir l'ordre des arguments pour Exception :
https://www.php.net/manual/en/exception.construct.php

Regardez maintenant l'ordre des arguments pour HTTPRequestException :
https://github.com/meilisearch/meilisearch-php/blob/master/src/Exceptions/HTTPRequestException.php#L15

Alors maintenant, revenons à Laravel, mon serveur MeiliSearch se bloque ou quelque chose du genre et cette erreur inonde ma table failed_jobs et une fois que je redémarre, elle est résolue, mais ce problème a commencé après la mise à niveau de ce package. J'ai environ 80 000 enregistrements dans cette table depuis ma mise à niveau.

Screen Shot 2020-08-17 at 4 18 34 PM

Oh désolé @dmyers , ce problème n'aurait pas dû être fermé, mon mauvais, il a été fait automatiquement par GitHub car j'ai lié le problème !

Pouvez-vous fournir la partie du code qui a échoué ? Car il nous est actuellement compliqué de deviner ce qui s'est passé sans détails. Je n'ai pas réussi à obtenir votre Error .
Dans tous les cas, MeiliSearch ne devrait pas se bloquer, quoi que vous fassiez. Un contexte serait vraiment utile pour le signaler et corriger le Error 🙂

@dmyers une mise à jour a été

Vous devez mettre à jour le package vers la version ^0.12 , cela vous demandera également d'ajouter un client http et une usine dont vous pouvez voir les détails dans les instructions d'installation du fichier readme.

Merci beaucoup pour la mise à jour @shokme. Je voyais toujours ces exceptions dans mon tableau des travaux échoués dans mon application Laravel, mais j'avais du mal à obtenir un cas de test reproductible à partager et je suis donc heureux que vous ayez pu le résoudre.

Je testerai la nouvelle version sous peu.

Bonjour @dmyers , est-ce toujours un problème, puis-je le fermer ? :)

Cette page vous a été utile?
0 / 5 - 0 notes