Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

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



Dabei seit:
Beiträge: 228

Themenstarter:

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

beantworten | zitieren | melden

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:
Fehler
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
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16234

beantworten | zitieren | melden

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

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Rioma
myCSharp.de - Member



Dabei seit:
Beiträge: 228

Themenstarter:

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
Taipi88
myCSharp.de - Member

Avatar #avatar-3220.jpg


Dabei seit:
Beiträge: 1044
Herkunft: Mainz

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Deaktiviertes Profil
myCSharp.de - Member



Dabei seit:
Beiträge: 996

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Deaktiviertes Profil am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16234

beantworten | zitieren | melden

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.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Rioma
myCSharp.de - Member



Dabei seit:
Beiträge: 228

Themenstarter:

beantworten | zitieren | melden

Zitat von Abt
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.
private Nachricht | Beiträge des Benutzers