Kunden können keine Bestellung tätigen + sich nach Registrierung nicht einloggen

Hallo, wir haben seit einigen Wochen das Problem, dass es bei Bestellungen im Shop zu Problemen kommt. Wir haben das Problem bei 2 Shops, welche von SW5 auf SW6 migriert wurden (mit dem Migrationsassistenten; Produkte, Kunden, Bestellungen etc. wurden übernommen). Anfangs lief es ohne Probleme, seit kurzem tritt vermehrt das Problem auf, dass ein Kunde sich entweder nicht mehr mit seinen Daten einloggen kann (Konto existiert angeblich nicht, auch wenn der Kunde am Tag vorher ein Konto angelegt hat) oder auch bei den Bestellungen selbst. Wir hatte seit der Migration auch immer wieder Updates installiert.

Es wird z.B. ein Artikel in den Warenkob gelegt, dann geht es zur Kasse und die Bestellung wird getätigt (als Gast). Danach kommt keine Bestellbestätigung sondern nur die Meldung, dass der Warenkorb leer sei. Ein Bestellung wurde nicht getätigt.

Hin und wieder funktioniert es dann komischerweise wieder. Nach kurzer Zeit taucht das Problem dann wieder auf. Kann es am Cache oder dem Theme liegen?
Wir haben zudem die Plugins von Amazon und Paypal im Einsatz. Shopware-Version ist die 6.5.8.6, Paypal und Amazon sind auch aktuell, PHP ist 8.2. Bei einem der Shops taucht auch hin und wieder die Meldung „s is undefined“ auf. Wir sind etwas ratlos, da es vorher funktionierte.

Wenn uns jemand auf die Schnelle weiterhelfen kann, wäre das super!

Das liest sich ganz so, als ob mit den Cookies oder der Session etwas nicht stimmt, wenn auf einmal der Warenkorb leer ist. Oder der Cache/Session wurde per Zufall genau in dem Moment im Hintergrund vom Server gelöscht.

Unter Einstellung > Warenkorb gibt/gab es mal eine Zeitangabe, wie lange der Warenkorb gültig sein soll. Einfach mal auf 30 setzen.

In dem Vorgang sind so viel unterschiedliche Komponenten beteiligt, dass eine Ferndiagnose sehr schwer ist. Am besten lasst Ihr jemanden kurz darauf schauen, der das professionell macht. Dann wird das Problem sicherlich schnell behoben sein.

Ansonsten zur entsprechenden Zeit einmal in var/log/prod-2024-xx-xx.log schauen, ob und was für ein Fehler protokolliert wurde. Die access.log in Apache/nginx könnte ggf. auch hilfreich sein.

Es geht im Allgemeinen die Session verloren. Es scheint, dass derzeit mehrere Nutzer hier ein ähnliches Problem haben. Im Log häufen sich Fehlermeldungen wie diese hier:
Uncaught PHP Exception Shopware\Core\Framework\MessageQueue\MessageQueueException: "Another worker is already running for receiver: "async"" at MessageQueueException.php line 38 {"exception":"[object] (Shopware\\Core\\Framework\\MessageQueue\\MessageQueueException(code: 0): Another worker is already running for receiver: \"async\" at /usr/www/users/vendor/shopware/core/Framework/MessageQueue/MessageQueueException.php:38)"} []

oder

Uncaught PHP Exception Shopware\Core\Framework\Routing\Exception\InvalidRequestParameterException: "The parameter "email" is invalid." at RoutingException.php line 25 {"exception":"[object] (Shopware\\Core\\Framework\\Routing\\Exception\\InvalidRequestParameterException(code: 0): The parameter \"email\" is invalid. at /usr/www/users/vendor/shopware/core/Framework/Routing/RoutingException.php:25)"} []

Das erste ist eine „normale“ Fehlermeldung, wenn der Cronjob auf das gleiche Interval eingestellt ist, wie die Dauer des Jobs. Laufzeit 10 Sekunden weniger wird vermutlich meistens passen.

Der zweite Fehler scheint mir in der Tat ernst zu sein. invalid bedeutet in dem Context so viel wie „entspricht nicht dem Format“ und nicht, kann nicht gefunden werden. Siehe: shopware/src/Core/Framework/Routing/RoutingException.php at 951f3306069315e3b37a0bfb80933fbf35de1492 · shopware/shopware · GitHub

Woher kann dies kommen?

Ein Nutzer, welchen wir heute morgen mit einem Konto angelegt haben, wurde einfach wieder gelöscht. Wir testen jetzt bei beiden Shops verschiedene Einstellungen im Cache. Bei einem der Shops haben wir den OPCache deaktivert, beim anderen Shop in der .env die SHOPWARE_HTTP_CACHE_ENABLED=0 gesetzt.

Ich kann mir beim besten Willen nicht vorstellen, dass im Quelltext auch nur annähernd eine Funktion im Sinne von „wenn x, dann lösche Kunde“ implementiert ist.

Das kann dann eigentlich nur heißen, dass das Backend nur vortäuscht, dass der Kunde angelegt wurde; sollte eigentlich nicht passieren, da es eine Rückmeldung vor der Erfolgsmeldung gibt.

oder

die Datenbank wird irgendwie zurückgesetzt bzw. eine gebündelte Transaktion. Letzteres sollte aber innerhalb von Sekunden erfolgen.

Der Cache kann ja nur etwas mit der Session zu tun haben, jedoch keine Kunden löschen.

Das mit den Kundenkonten fanden wir auch seltsam, sämtliche Bestätigungsemails sind angekommen, im Backend war das Konto auch sichtbar, bis es dann verschwunden ist.

Was wir eben noch getestet haben ist, dass wir eine Gast-Bestellung gemacht haben und dort wieder die Meldung beim Abesenden kam, dass der Warenkorb leer sei. Dann haben wir den Cache gelöscht wieder eine Gastbestellung angestoßen (neuer Browser, alles gelöscht etc) und diese Bestellung dann erfolgreich an kam.

Sehr komisch. Bei uns werden keine Kundenkonten einfach gelöscht. Wir haben nur das Problem, dass Kunden sich nicht einloggen können und die Fehlermeldung kommt, es sei kein Account mit den Zugangsdaten vorhanden. Gastbestellungen sind jedoch möglich.
An den Einstellungen im Backend wurde eigentlich nichts verändert.

Genau, die Fehlermeldung kommt auch immer wieder, nur dass das Problem auch bei Gastbestellungen auftraucht. Beim Absenden kommt nur die Meldung der Warenkorb sei leer.

Das hatte ich auch, bis ich in den Einstellungen unter Warenkorb „Zeit in Minuten, die ein Kunde Zeit hat eine Transaktion abzuschließen“ auf 120min gesetzt hab. Jetzt scheint es bei Gastbestellern zu funktionieren (bis jetzt). (Vorher war nichts eingetragen)

Ok, in unseren Einstellungen war 30 Minuten hinterlegt. Wir haben es mal auch 180 hoch gesetzt und beobachten mal, wie es sich verhält.

Das Problem besteht immer noch. Nutzer wollen eine Bestellung tätigen und der Warenkorb wird geleert und die Bestellung kommt nicht an.

ich würde hier auch auf ein Problem mit dem Session-Management tippen. Ohne Session geht einfach auch kein Login. Und der Warenkorb löscht sich „augenscheinlich“; tatsächlich läuft die Session ab.

herzlichst

Einfach mal den Browser-Entwicklungsmodus öffnen und schauen, was im Cookie so passiert.
Ebenfalls, falls möglich, auf dem Server sich die Session ansehen und parallel dazu verfolgen.
Dann sollte sich das Problem schnell identifizieren lassen.

Kunden werden dadurch dennoch nicht einfach so gelöscht.