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
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:
Beim leeren des Connection-Pools wäre nur die eine Anwendung betroffen und keine anderen.
Habt ihr bessere Ideen?
Danke und Grüße
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 - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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?
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
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.
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 - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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.