Laden...

Bei Verbindungsunterbrüchen oder Attachement-Close mit Firebird DB & ASP.NET Core geht nichts mehr

Erstellt von Rioma vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.852 Views
R
Rioma Themenstarter:in
228 Beiträge seit 2013
vor 6 Jahren
Bei Verbindungsunterbrüchen oder Attachement-Close mit Firebird DB & ASP.NET Core geht nichts mehr

verwendetes Datenbanksystem: Firebird

Hallo zusammen,

wir benutzen momentan ein Backend auf ASP.Net Core Basis in zusammenspiel mit Firebird.
Connection-Pooling ist aktiviert. Sollte nun die Datenbank

  1. kurzzeitig nicht erreichbar sein
  2. ein Attachement über die DB geschlossen werden
  3. aus welchen Grund auch immer eine Connection wegbrechen

geht nichts mehr.

Der Grund ist folgender: > Fehlermeldung:

FirebirdSql.Data.FirebirdClient.FbException: Error reading data from the connection.

Laut diesem Issue, ist das das vorgesehene verhalten: http://tracker.firebirdsql.org/browse/DNET-585?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel

Mir fallen nun nur 2 "Lösungen" ein:

  1. Connection-Pooling deaktivieren (würde ich nicht unbedingt als Lösung sehen)
  2. Die Exception fangen, den Pool leeren und den SQL erneut absetzen

Beim leeren des Connection-Pools wäre nur die eine Anwendung betroffen und keine anderen.

Habt ihr bessere Ideen?

Danke und Grüße

16.807 Beiträge seit 2008
vor 6 Jahren

Wenn Du nicht basteln oder Pooling selbst schreiben willst, dann bleibt Dir - solange der Bug nicht gefixt ist - nur das Deaktivieren des Poolings.

R
Rioma Themenstarter:in
228 Beiträge seit 2013
vor 6 Jahren

Ist es denn deiner Meinung nach ein Bug? Da in dem Issue-Tracker von "expected behavior" gesprochen wird.

Wenn ich mich richtig entsinne, passiert mir das mit dem SQL-Server nicht. Allerdings habe ich momentan keinen zum testen.

Kann jemand bestätigen, dass z.B. das neustarten des SQL-Servers mit über Connection-Pooling verbundenem Backend keine Probleme macht?

1.029 Beiträge seit 2010
vor 6 Jahren

Hi,

soweit ich das verstanden habe - kann man dieses Problem allerdings auch dadurch relativieren, dass man die Lifetime der Connections verändert, dass beispielsweise das Problem damit maximal auf 60 Sekunden nach dem Vorfall beschränkt wird, was ja schon mal eine erhebliche Verbesserung darstellen würde.

LG

D
985 Beiträge seit 2014
vor 6 Jahren

Nach dem Lesen des Bug-Tracker Eintrags und der verlinkten Diskussion habe ich folgendes Bild vor Augen:

Mit der Version vor 4.6.0 hat das ConnectionPooling (scheinbar) wie (von den Verwendern) erwartet funktioniert.

Scheinbar deshalb, weil es wohl nicht zu 100% funktioniert hat und die Firebird Entwickler haben sich dazu entschieden dieses ab der Version 4.6.0 herauszunehmen weil sie keine Möglichkeit sehen, das zuverlässig umzusetzen:

Zitat von: Jiri Cincura-2
In fact it's even impossible to do it reliably.

Bug hin oder her, wenn die Entwickler das nicht wollen oder können - aus welchen Gründen auch immer - dann musst du eben daherum programmieren. Möglichkeiten gibt es da einige, bis hin zum Wechsel der Datenbank.

16.807 Beiträge seit 2008
vor 6 Jahren

Da es sich vom eigentlichen ADO.NET Kommunikationparadigma unterscheidet, ist es für mich in diesem Sinne schon ein Bug; egal was die andere Seite als Grund darstellt.

R
Rioma Themenstarter:in
228 Beiträge seit 2013
vor 6 Jahren

Da es sich vom eigentlichen ADO.NET Kommunikationparadigma unterscheidet, ist es für mich in diesem Sinne schon ein Bug; egal was die andere Seite als Grund darstellt.

Demnach hatte ich mich richtig erinnert, dass dies z.B. beim SQL-Server nicht zu Problemen führt?

Wechsel der Datenbank ist leider keine Option.

Ich werde mal mit der Lifetime der Connections hantieren und im Notfall Richtung eigenem Connection-Pooling testen.

Sehr ärgerlich.