Bug #236
offen[Bugsink] ApacheSolrForTypo3\Solr\System\Solr\SolrCommunicationException: Invalid query. Solr returned an error: 414 URI Too Long
0%
Beschreibung
Bugsink: https://bugsink.cytrus.de/issues/issue/dd5e8f35-fc6a-43b8-9f2b-f1af7eb6eee2/event/last/
Typ: NEW issue
Projekt: www-rietberg-de
Bugsink Alert
ApacheSolrForTypo3\Solr\System\Solr\SolrCommunicationException: Invalid query. Solr returned an error: 414 URI Too Long
Automatisch erstellt durch n8n
KI-Analyse:
1. Ursache identifizieren¶
Die eigentliche Ursache ist nicht in den gezeigten TYPO3-Core-Frames zu suchen. Diese Frames zeigen nur, dass der Fehler während einer normalen TYPO3-HTTP-Request-Verarbeitung aufgetreten ist.
Der relevante Teil ist:
ApacheSolrForTypo3\Solr\System\Solr\SolrCommunicationException:
Invalid query. Solr returned an error: 414 URI Too Long
Das bedeutet:
- TYPO3/EXT:solr sendet eine Anfrage an Solr.
- Diese Solr-Anfrage ist zu lang.
- Solr bzw. der HTTP-Container vor Solr antwortet mit 414 URI Too Long.
- EXT:solr wrapped diese Solr-Antwort in eine
SolrCommunicationException.
Typische Auslöser:
- Sehr viele Facetten-/Filterparameter
- Sehr lange
fq-Parameter - Große
OR-Listen in der Query - Viele ausgewählte Filter im Suchformular
- Sehr lange Such-URLs mit vielen
tx_solr[filter]-Parametern - Solr-Query wird per HTTP
GETabgesetzt und überschreitet das URL-/Request-Line-Limit
Kurz gesagt:
EXT:solr baut eine zu lange Solr-Query-URL, vermutlich durch viele Filter/Facetten, und Solr lehnt diese mit HTTP 414 ab.
2. Fix beschreiben – konkret¶
Dauerhafter Fix¶
Die Solr-Query darf nicht als zu langer GET-Request an Solr gesendet werden.
Option A – Solr-Queries auf POST umstellen¶
Wenn eigene Solarium-Queries verwendet werden:
use Solarium\Core\Client\Request;
$query->setMethod(Request::METHOD_POST);
Dann werden die Query-Parameter im Request-Body statt in der URL transportiert.
Bei EXT:solr intern bedeutet das je nach Version:
- EXT:solr auf aktuelle Version aktualisieren, falls POST-Support bzw. entsprechender Fix vorhanden ist
- oder die betroffene Query-Building-/Service-Klasse per XCLASS/Patch anpassen, sodass Select-Queries an Solr per
POSTgesendet werden - alternativ eigene Query-Erzeugung so anpassen, dass keine extrem langen GET-Queries entstehen
Option B – Query-Parameter reduzieren¶
Prüfen, welche Parameter die Solr-URL aufblähen. Häufige Kandidaten:
- Facettenfilter
- Access-Filter
- Seiten-/UID-Filter
- große
in (...)-Listen - viele ausgewählte Filterwerte
Konkrete Maßnahmen:
- Anzahl auswählbarer Facetten begrenzen
- Multi-Select-Facetten einschränken
- keine tausenden UID-Werte als einzelne Filterparameter senden
- lange
OR-Queries vermeiden - Filterlogik kompakter bauen, z. B. über kompakte Solr-Queries statt vieler einzelner
fq-Parameter - Search-Formulare prüfen, ob versehentlich alte/dupe Filterparameter gesendet werden
Option C – Nur als Workaround: HTTP-Limits erhöhen¶
Falls kurzfristig keine Query-Änderung möglich ist:
- Request-Line-/Header-Limits des Solr-Webservers oder Reverse-Proxys erhöhen
Bei Apache vor Solr z. B.:
LimitRequestLine 32768
LimitRequestFieldSize 16380
LimitRequestFields 200
Das ist aber nur ein Workaround. Der bessere Fix ist: weniger Query-Parameter oder POST statt GET.
3. Betroffene TYPO3 Extension¶
Betroffen ist:
EXT:solr
Package: apache-solr-for-typo3/solr
Namespace: ApacheSolrForTypo3\Solr
Nicht betroffen im engeren Sinne: TYPO3 Core. Die gezeigten Core-Frames sind nur der Request-Kontext.
4. Confidence¶
Confidence: 95 %
Die Fehlermeldung ist sehr eindeutig: Solr antwortet mit 414 URI Too Long, und die Exception kommt aus dem Namespace der TYPO3-Solr-Extension. Die genaue einzelne Query-Komponente, also z. B. welcher konkrete Facettenfilter die URL überbläht, lässt sich aus dem gegebenen Stack allein nicht bestimmen.
Nichts anzuzeigen