Witam, mam problem z TADOConnection.
Connection łączy się z bazą przy starcie aplikacji i zamyka połączenie przy wyjściu.
Mam też dodatkowy thread który sprawdza czy jest połączenie jako że TADOConnection nie zawsze wykrywa zerwane połączenie (np restart serwera PostgreSQL - Connected pokazuje że jest ok ale połączenia faktycznie nie ma i próba wykonania kwerki kończy się wyjątkiem).
Thread wykrywa problem z połączeniem, zamyka połączenie metodą Connection ->Close() i otwiera ponownie metodą Connection->Open().
Aplikacja uruchomiona, wszystko ok, robię restart serwera, mój thread wykrywa zerwane połączenie i przywraca poprawnie (połączenie znów widoczne w pg_stat_activity i można wywoływać zapytania).
Robię drugi raz restart serwera (czy zabijam połączenie kwerką) i już jest problem - thread wykrywa zerwane połączenie, i przywraca je, metoda Open() wykonuje się poprawnie, Connected znów pokazuje true ale połączenia faktycznie nie ma, nie jest widoczne w pg_stat_activity i próba wywołania zapytania wywołuje wyjątek brak połączenia do bazy. Thread znów wykrywa problem, zamyka i otwiera połączenie i tak w kółko bo połączenia faktycznie nie ma.
Ktoś miał podobną sytuację? Pierwsze zerwane połączenie jest bez problemu przywrócone ale kolejne już nie. Kod jest ok, eventy są generowane poprawnie AfterConnect, Open() jest happy a połączenia nie ma...