Meilisearch-laravel-scout: Parámetros incorrectos para MeiliSearch \ Exceptions \ HTTPRequestException

Creado en 10 ago. 2020  ·  14Comentarios  ·  Fuente: meilisearch/meilisearch-laravel-scout

Comenzó a recibir esta excepción después de actualizar a la última versión ayer de este paquete.

Stacktrace:

[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

Todos 14 comentarios

El mismo problema aquí, después de actualizar este paquete, necesitaba actualizar este ejemplo de código tomado del Léame como se muestra a continuación =>

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

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

Para

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

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

Vea el parámetro $meilisearch , se escribió pista en Meilisearch\Index antes, pero ahora tenemos que escribir pista en MeiliSearch\Endpoints\Indexes .

Y luego tengo este problema:

[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}
"} 

¡Hola chicos!

Lo siento, la versión anterior debería haber sido un nuevo menor ( v0.11.0 lugar de v0.10.7 ). ¡No nos dimos cuenta de que se estaba rompiendo! ¡Lo siento por eso!

@YannickYayo , ¡gracias por la solución! ¡Este PR # 38 tiene en cuenta lo que dijiste! ¿Es suficiente para ti o me perdí de algo? 🙂

@dmyers , ¿la solución de @YannickYayo resuelve tu problema?

@dmyers y @YannickYayo (y @shokme). Otra pregunta: ¿crees que deberíamos eliminar el v0.10.7 de Packagist y de GitHub y crear un nuevo v0.11.0 ? ¿O simplemente crear un nuevo v0.11.0 es suficiente?

Oh, olvidé mencionarlo, pero mi pequeña solución no resuelve el problema con Wrong parameters for MeiliSearch\Exceptions\HTTPRequestException... :(
Intentaré depurarlo y proporcionar comentarios.

En mi opinión, crear un nuevo v0.11.0 es suficiente, puede ser que pueda escribir una advertencia sobre el v0.10.7 .

Sí, ya había hecho el mismo cambio que hizo @YannickYayo con la sugerencia de tipo para el índice y esta excepción ocurrió después.

Lo siento cerrado accidentalmente por error de mal clic.

Estoy de acuerdo con

Por cierto, esto no se solucionará simplemente con el # 38 porque esta excepción es causada por un cambio reciente de la dependencia ascendente de PHP MeiliSearch que agregó compatibilidad con v0.13 .

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

Actualizar :

Estaba usando la versión 0.12 del motor Meilisearch, después de actualizarlo en la ventana acoplable a 0.13 y volver a indexar mis documentos, ¡me soluciona el problema!

Ok, lo siento chicos, fui demasiado rápido, entiendo que mi PR no soluciona nada excepto una pequeña parte del README 😅

Así que ahora @YannickYayo , entiendo que tu problema está solucionado, ¿verdad? Actualicé el archivo README en el n. ° 38 de acuerdo con lo que dijiste: meilisearch-laravel-scout v0.10.7 no es compatible con MeiliSearch v0.12.0 y antes

@dmyers , tengo entendido que su problema sigue ahí a pesar de:

  • el cambio de Index en Indexes
  • la actualización de su instancia de MeiliSearch (v0.13.0)

¿Derecha?

@curquiza Sí, usando Meilisearch v0.13.0 solucionó mi problema: +1:

He estado usando la versión v0.13.0 desde antes de abrir este problema.

Todavía recibo este error a partir de hoy, pero parece ser causado por el SDK de PHP si mi instancia del servidor de búsqueda está inactiva, lo que ocurre en momentos aleatorios y la única solución es reiniciarlo, pero aún no es ideal que el SDK PHP oficial de Meilisearch no maneja el código de estado de excepción adecuado para ese caso.

Creo que la causa principal es un uso inadecuado de la extensión de la clase Exception en la clase HTTPRequestException que cambia incorrectamente el orden de los argumentos de la clase Exception en PHP stdlib.

Aquí puede ver el orden de los argumentos de Exception :
https://www.php.net/manual/en/exception.construct.php

Ahora mire el orden de los argumentos para HTTPRequestException :
https://github.com/meilisearch/meilisearch-php/blob/master/src/Exceptions/HTTPRequestException.php#L15

Así que ahora, de vuelta a Laravel, de alguna manera mi servidor MeiliSearch se congela o algo y este error inunda mi tabla failed_jobs y una vez que reinicio se resuelve, pero este problema comenzó después de actualizar este paquete. Tengo alrededor de 80.000 registros en esta tabla desde que actualicé.

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

Oh, lo siento @dmyers , este problema no debería haberse cerrado, mi

¿Puede proporcionar la parte del código que falló? Porque actualmente nos resulta complicado adivinar qué sucedió sin detalles. No logré obtener tu Error .
En cualquier caso, MeiliSearch no debería congelarse sin importar lo que hagas. Un contexto sería realmente útil para informarlo y corregir el Error 🙂

@dmyers se ha

Debe actualizar el paquete a la versión ^0.12 , que también requerirá que agregue un httpclient y factory, puede ver el detalle en las instrucciones de instalación del archivo Léame.

Muchas gracias por la actualización @shokme. Todavía veía estas excepciones en mi tabla de trabajos fallidos en mi aplicación Laravel, pero me resultaba difícil obtener un caso de prueba reproducible para compartir, por lo que me alegro de que haya podido resolverlo.

Probaré la nueva versión en breve.

Hola @dmyers , ¿sigue siendo un problema? ¿Puedo cerrarlo? :)

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

elfeffe picture elfeffe  ·  30Comentarios

Cannonb4ll picture Cannonb4ll  ·  6Comentarios

milosevicn picture milosevicn  ·  5Comentarios

marky291 picture marky291  ·  6Comentarios

husonghua picture husonghua  ·  5Comentarios