Einzelnen Beitrag anzeigen

pHL

Registriert seit: 27. Mai 2011
83 Beiträge
 
Delphi XE2 Professional
 
#1

Firebird Locktimeout funktioniert nicht wie erwartet

  Alt 11. Feb 2020, 16:10
Datenbank: Firebird Embedded • Version: 2.5 / 3.0 • Zugriff über: Firedac
Hallo Leute,

ich habe momentan folgende Architektur für eine Anwendung mit lokaler Datenbank:
  • N- Connections (TFDConnection) - werden zur Laufzeit für jeden einzelnen Thread erzeugt
  • pro Connectionen eine Transaction (es handelt sich dabei um die interne Transaction jeder Connection, laut Doku ist das auch ok (separate Transactions sind optional))

Nun habe ich versucht, das Standard-Lock-Verhalten von "Optimistic" auf "Pesimistic" zu ändern, um im Falle eines Locks 5 Sekunden zu warten bevor eine Exception geworfen wird.

Dabei ist mir aufgefallen, dass das Lock-Timeout nur korrekt aus dem "firebird.conf"-File verwendet wird, wenn man eine einzige Connection und N Transactions hat. Wenn man das nicht macht, dann wird ein INFINITE Lock-Timeout verwendet.

Ist das ein erklärbares Verhalten oder handelt es sich dabei um einen Bug bei Firebird / Firedac?

Im Anhang ist ein Beispiel-Programm das dieses Problem reproduzieren kann.

Danke im Vorraus!
pHL
Angehängte Dateien
Dateityp: zip TestDB.zip (4,15 MB, 6x aufgerufen)
  Mit Zitat antworten Zitat