Meilisearch-laravel-scout: Falsche Parameter für MeiliSearch\Exceptions\HTTPRequestException

Erstellt am 10. Aug. 2020  ·  14Kommentare  ·  Quelle: meilisearch/meilisearch-laravel-scout

Diese Ausnahme wurde nach dem gestrigen Upgrade auf die neueste Version dieses Pakets angezeigt.

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

Alle 14 Kommentare

Das gleiche Problem hier, nach der Aktualisierung dieses Pakets musste ich dieses Codebeispiel aus der Readme wie unten aktualisieren =>

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

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

Zu

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

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

Siehe den Parameter $meilisearch , vorher wurde hint in Meilisearch\Index eingegeben, aber jetzt müssen wir hint in MeiliSearch\Endpoints\Indexes .

Und dann habe ich dieses Problem:

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

Hallo Leute!

Entschuldigung, die vorherige Version hätte eine neue Nebenversion sein sollen ( v0.11.0 statt v0.10.7 ). Wir wussten nicht, dass es kaputt geht! Das tut mir leid!

@YannickYayo , danke für die Lösung! Dieser PR #38 berücksichtigt, was Sie gesagt haben! Reicht es dir oder habe ich etwas übersehen? 🙂

@dmyers , löst der Fix von @YannickYayo Ihr Problem?

@dmyers und @YannickYayo (und @shokme). Eine andere Frage: Meinst du, wir sollten v0.10.7 aus Packagist und GitHub entfernen und ein neues v0.11.0 erstellen? Oder reicht es aus, einfach ein neues v0.11.0 erstellen?

Oh, ich habe vergessen zu erwähnen, aber mein kleiner Fix löst das Problem nicht mit Wrong parameters for MeiliSearch\Exceptions\HTTPRequestException... :(
Ich werde versuchen, es zu debuggen und Feedback zu geben.

Meiner Meinung nach reicht es aus, ein neues v0.11.0 erstellen, vielleicht können Sie eine Warnung über das v0.10.7 schreiben.

Ja, ich hatte bereits die gleiche Änderung wie @YannickYayo mit dem Typhint für den Index vorgenommen und diese Ausnahme trat danach auf.

Entschuldigung, versehentlich durch einen falschen Klick geschlossen.

Ich stimme der Versionierung mit

Übrigens wird dies nicht einfach mit #38 behoben, da diese Ausnahme durch eine kürzliche Änderung der Upstream-MeiliSearch-PHP-Abhängigkeit verursacht wird, die die Kompatibilität mit v0.13 hinzugefügt hat.

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

Aktualisieren :

Ich habe die 0.12 Version der Meilisearch-Engine verwendet, nachdem ich sie im Docker auf 0.13 aktualisiert und meine Dokumente neu indiziert habe, behebt sie das Problem für mich!

Ok, sorry Leute, ich bin zu schnell gegangen, ich verstehe, dass meine PR nichts außer einem kleinen Teil der README behebt 😅

Also, @YannickYayo , ich verstehe, dass Ihr Problem behoben ist, oder? Ich habe die README-Datei in #38 entsprechend Ihrer Aussage aktualisiert: meilisearch-laravel-scout v0.10.7 ist nicht kompatibel mit MeiliSearch v0.12.0 und früher

@dmyers , ich verstehe, dass Ihr Problem immer noch besteht, obwohl:

  • die Änderung von Index in Indexes
  • das Update Ihrer MeiliSearch-Instanz (v0.13.0)

Rechts?

@curquiza Ja , mit Meilisearch v0.13.0 ich mein Problem behoben :+1:

Ich habe die Version v0.13.0 seit ich dieses Problem geöffnet habe.

Ich erhalte diesen Fehler bis heute immer noch, aber er scheint vom PHP SDK verursacht zu werden, wenn meine Suchserver-Instanz ausgefallen ist, was zu zufälligen Zeiten passiert und die einzige Lösung darin besteht, sie neu zu starten, aber es ist immer noch nicht ideal dass das offizielle PHP-SDK von Meilisearch in diesem Fall nicht den richtigen Ausnahmestatuscode verarbeitet.

Ich glaube, die Hauptursache ist die schlechte Verwendung der Exception-Klassenerweiterung in der HTTPRequestException Klasse, die die Argumentreihenfolge der Exception-Klasse in der PHP-stdlib falsch vertauscht.

Hier sehen Sie die Reihenfolge der Argumente für Exception :
https://www.php.net/manual/en/Exception.construct.php

Sehen Sie sich nun die Reihenfolge der Argumente für HTTPRequestException :
https://github.com/meilisearch/meilisearch-php/blob/master/src/Exceptions/HTTPRequestException.php#L15

Also zurück zu Laravel, irgendwie friert mein MeiliSearch-Server ein oder so und dieser Fehler überflutet meine failed_jobs Tabelle und sobald ich neu starte, ist es behoben, aber dieses Problem begann nach dem Upgrade dieses Pakets. Ich habe ungefähr 80.000 Datensätze in dieser Tabelle seit meinem Upgrade.

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

Oh sorry @dmyers , dieses Problem hätte nicht geschlossen werden dürfen, mein

Können Sie den fehlgeschlagenen Teil des Codes bereitstellen? Denn es ist derzeit für uns schwierig, ohne Details zu erraten, was passiert ist. Es ist mir nicht gelungen, Ihre Error .
Auf jeden Fall sollte MeiliSearch nicht einfrieren, egal was Sie tun. Ein Kontext wäre wirklich hilfreich, um es zu melden und das Error zu beheben 🙂

@dmyers wurde ein Update gepusht, dies sollte die "falschen Parameter"

Sie müssen das Paket auf die Version ^0.12 aktualisieren, dazu müssen Sie auch einen http-Client und eine Factory hinzufügen. Details finden Sie in der Installationsanleitung in der Readme-Datei.

Vielen Dank für das Update @shokme. Ich sah diese Ausnahmen immer noch in meiner Tabelle mit fehlgeschlagenen Jobs in meiner Laravel-App, fand es jedoch schwierig, einen reproduzierbaren Testfall zum Teilen zu erhalten, und daher bin ich froh, dass Sie ihn lösen konnten.

Ich werde die neue Version gleich testen.

Hallo @dmyers , ist das immer noch ein Problem, kann ich es schließen? :)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen