Projekt

Allgemein

Profil

Aktionen

Bug #297

offen

[Bugsink] Doctrine\DBAL\Exception\LockWaitTimeoutException: An exception occurred while executing a query: Lock wait timeout exceeded; try restarting transacti…

Von Bug Sink vor 28 Tagen hinzugefügt.

Status:
Neu
Priorität:
wichtig
Zugewiesen an:
-
Beginn:
24.09.2026
Abgabedatum:
% erledigt:

0%

Geschätzter Aufwand:

Beschreibung

Bugsink: https://bugsink.cytrus.de/issues/issue/66862b27-42ff-4b33-b3dd-930402dcad74/event/last/

Typ: NEW issue

Projekt: www-rietberg-de

Bugsink Alert

Doctrine\DBAL\Exception\LockWaitTimeoutException: An exception occurred while executing a query: Lock wait timeout exceeded; try restarting transacti…


Automatisch erstellt durch n8n

KI-Analyse:

Analyse: Lock Wait Timeout Exceeded in TYPO3


1. Ursache identifizieren

Der Fehler mysqli_sql_exception: Lock wait timeout exceeded; try restarting transaction ist ein MySQL/MariaDB-InnoDB-Problem: Eine laufende Transaktion hält einen exklusiven Lock auf einer Datenbankzeile (oder Zeilen) und eine zweite Transaktion (der aktuelle TYPO3-Request) kann nicht darauf zugreifen, weil das konfigurierte Wartezeitlimit (innodb_lock_wait_timeout, Standard: 50 Sekunden) überschritten wurde.

Konkrete Analyse des Stack Traces:

  • Der Fehler tritt während des HTTP-Request-Lifecycle auf – bevor das Frontend oder Backend eigentlich gerendert wird
  • Die beteiligten Middleware-Komponenten (VerifyHostHeader, NormalizedParamsAttribute, ResponsePropagation) greifen auf Session- und Konfigurationsdaten zu
  • Wahrscheinlichste Ursachen:
Ursache Wahrscheinlichkeit
Hängende Transaktion durch Scheduler-Task (z.B. Import, Cronjob) Hoch
Backend-Benutzer speichert gerade Datensätze Mittel
Langlaufende Import-/Queue-Extension Hoch
Fehlerhafte Transaktionsbehandlung in einer Third-Party-Extension Mittel
Deadlock-ähnliches Verhalten auf fe_sessions, sys_log oder pages Mittel

Schlüsselbeobachtung: Der Fehler erfolgt bereits in der Middleware-Phase (MiddlewareDispatcher::handle), was darauf hindeutet, dass die Datenbank-Operation frühe Initialisierung betrifft – typischerweise Session-Handling (fe_typo_user) oder TypoScript-/Konfigurationsaufbau.


2. Fix beschreiben (konkret)

Sofortmaßnahme (Symptom beheben):

-- Blockierenden Prozess identifizieren:
SHOW ENGINE INNODB STATUS\G

-- Alle aktiven Transaktionen prüfen:
SELECT * FROM information_schema.INNODB_TRX ORDER BY trx_started;

-- Blockierenden Prozess beenden:
KILL [process_id];

Konfiguration (Prävention):

-- Lock-Wait-Timeout erhöhen (in my.cnf / my.ini):
innodb_lock_wait_timeout = 120

-- Gleichzeitig Timeout-Prüfung in TYPO3 prüfen:
-- In LocalConfiguration.php / AdditionalConfiguration.php:
$GLOBALS['TYPO3_CONF_VARS']['SYS']['dbClientCompress'] = false;

Langfristige Lösungen:

  1. Root-Cause-Suche: SHOW ENGINE INNODB STATUS regelmäßig prüfen, um den blockierenden Query zu identifizieren
  2. Langlaufende Queries optimieren: Besonders Scheduler-Tasks und Import-Scripts prüfen
  3. Index-Optimierung: Fehlende Indexe auf häufig gelockten Tabellen hinzufügen
  4. Transaktionsdauer minimieren: In Extensions sicherstellen, dass Transaktionen kurz gehalten werden
  5. Page-Cache aktivieren: Reduziert DB-Zugriffe erheblich ($GLOBALS['TYPO3_CONF_VARS']['FE']['enable_pagecache'])
  6. Connection Pooling: Prüfen, ob nicht zu viele gleichzeitige Verbindungen geöffnet sind

TYPO3-spezifisch:

// In AdditionalConfiguration.php – ggf. DB-Timeout anpassen:
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['driverOptions'] = [
    \PDO::ATTR_TIMEOUT => 5,
    \PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
];

3. Betroffene TYPO3 Extension

Da der Stack Trace ausschließlich Core-Komponenten zeigt und keine Third-Party-Extension im Trace sichtbar ist, ist die betroffene Ebene der TYPO3 Core selbst.

Allerdings ist der Verursacher wahrscheinlich eine der folgenden Extensions:

Mögliche Extension Begründung
t3solr / solr_for_typo3 Häufiger Kandidat – long-running Indexierungs-Jobs
sf_event_mgt Regelmäßige Registrierungs-/Ticket-Importe
tt_products / commerce E-Commerce mit Bestell-/Lagerverwaltung
tx_news (mit Scheduler-Import) News-Import-Routinen
impexp Export/Import-Prozesse
Eigene Scheduler-Tasks Individuelle Backend-Tasks ohne Timeout-Handling

Hinweis: Ohne genauere Angabe der installierten Extensions ist eine definitive Zuordnung nicht möglich. Der Fehler kann durch jede Extension verursacht werden, die long-running Transaktionen ausführt.

Tipp zur Identifikation:

-- Blockierende Query identifizieren:
SELECT trx_mysql_thread_id, trx_query, trx_started, trx_state 
FROM information_schema.INNODB_TRX 
WHERE trx_state = 'LOCK WAIT';

4. Confidence

Aspekt Confidence
Fehlerbild korrekt erkannt (InnoDB Lock Wait Timeout) 95%
Ursache identifiziert (hängende externe Transaktion blockiert Request) 75%
Spezifische Extension benennbar (ohne Installationsliste) 40%
Fix-Praxis korrekt 90%

Gesamte Confidence: ~75%

Der Error-Code ist eindeutig und die Analyse des Stack Traces erlaubt eine klare Zuordnung zum InnoDB-Layer. Die Identifizierung der spezifischen verursachenden Extension erfordert jedoch zusätzliche Datenbank-Analysen (SHOW ENGINE INNODB STATUS).

Nichts anzuzeigen

Aktionen

Auch abrufbar als: Atom PDF