RuntimeException durch Widget

Moin, ich rufe in einem eigenen Template das Widget zur Sprachumschaltung auf:

{action module=widgets controller=index action=shopMenu}

Leider verursacht das manchmal einen fehler und die Seite wird nicht weiter geladen. Der Fehler tritt meist auf, wenn man die performOrder-Action aus dem Backend aufruft. 

Folgender fehler wird geworfen:

: Uncaught exception 'RuntimeException' with message 'Error when rendering "https://website.com/shop/?action=shopMenu&controller=index&module=widgets" (Status code is 503).' in /web/vendor/symfony/http-kernel/HttpCache/Esi.php:281
Stack trace:
#0 /web/vendor/symfony/http-kernel/HttpCache/HttpCache.php(643) : eval()'d code(177): Symfony\Component\HttpKernel\HttpCache\Esi->handle(Object(Shopware\Components\HttpCache\AppCache), '/shop/?module=w...', '', false)
#1 /web/vendor/symfony/http-kernel/HttpCache/HttpCache.php(643): eval()
#2 /web/vendor/symfony/http-kernel/HttpCache/HttpCache.php(213): Symfony\Component\HttpKernel\HttpCache\HttpCache->restoreResponseBody(Object(Symfony\Component\HttpFoundation\Request), Object(Symfony\Component\HttpFoundation\Response))
#3 web/engine/Shopware/Components/HttpCache/AppCache.php(114): Symfony\Component\HttpKernel\HttpCache\HttpCac in 

Nachdem der Cache geleert wurde, ist der Fehler weg, tritt dann aber nach einer Weile wieder auf. 

  1. Warum ist das so?

  2. Wie kann ich ausserhalb des Widgets auf die Sprachen zugreifen um ohne das Widget die Sprachumschaltung auszugeben?

vielen Dank.

keiner?

zu 2. würde ich mir ein eigenes Widget bauen aber ich befürchte dass ich dann das gleiche Problem bekomme.

Naja, du müsstest in Erfahrung bringen, welcher Fehler hinter dem 503 steckt. Die Meldung oben sagt nur, dass zu der Zeit als die Seite gerendert wurde das Widget einen 503 zurückgegeben hat. Der Muss ja irgendwo in den Logs des Servers (nicht Shopware) auftauchen.

@Moritz Naczenski schrieb:

Naja, du müsstest in Erfahrung bringen, welcher Fehler hinter dem 503 steckt. Die Meldung oben sagt nur, dass zu der Zeit als die Seite gerendert wurde das Widget einen 503 zurückgegeben hat. Der Muss ja irgendwo in den Logs des Servers (nicht Shopware) auftauchen.

Danke für die Antwort. Leider konnte ich keinerlei hinweise in den logs finden. Das kuriose ist ja, dass ich das selbe Widget ja auch an anderer stelle verwende. dort maxcht es aber keine probleme. 

I could not find the cause of this error. There was an idea that the widget calls itself and the problem is related to the wrong pattern, but I could not find the source of the problem.

So, as option, HardFix:

SHOPWARE_ROOT/vendor/symfony/http-kernel/HttpCache/Esi.php::280

**IN public function** handle(HttpCache $cache, $uri, $alt, $ignoreErrors)

You need to comment throw Exception and add return empty string:

**if** (!$response-\>isSuccessful()) { // **throw new** \RuntimeException(_sprintf_(**'Error when rendering "%s" (Status code is %s).'**, $subRequest-\>getUri(), $response-\>getStatusCode())); **return ''** ; }

It’s bad way and I don’t recommend to edit source code , but in case it’s critical issue and you can’t find solution - you can use it.