PostgreSQL Connection случайные ошибки

Я запускаю ряд тестов с использованием NUnit. Каждый тест подключается к базе данных PostgreSQL и что-то там делает.

Иногда я получаю NullReferenceException с этой трассировкой стека:

 at Devart.Data.PostgreSql.o.a(Byte[] A_0, Int32 A_1, Int32 A_2, Int32 A_3)
   at Devart.Data.PostgreSql.o.b(Byte[] A_0, Int32 A_1, Int32 A_2)
   at Devart.Data.PostgreSql.o.a(Char A_0)
   at Devart.Data.PostgreSql.r.b(Char A_0)
   at Devart.Data.PostgreSql.r.d(af A_0)
   at Devart.Data.PostgreSql.i.a(af A_0, Boolean A_1, Boolean A_2, Boolean A_3)
   at Devart.Data.PostgreSql.i.a(af A_0, Boolean A_1, Boolean A_2)
   at Devart.Data.PostgreSql.i.a(af A_0, Boolean A_1)
   at Devart.Data.PostgreSql.af.n()
   at Devart.Data.PostgreSql.ag.a(af A_0, Boolean A_1)
   at Devart.Data.PostgreSql.ag.a(af A_0)
   at Devart.Data.PostgreSql.ag.o()
   at Devart.Data.PostgreSql.ag.a()
   at Devart.Common.DbConnectionInternal.ao()
   at Devart.Common.DbConnectionFactory.a(DbConnectionBase A_0)
   at Devart.Common.DbConnectionClosed.Open(DbConnectionBase outerConnection)
   at Devart.Common.DbConnectionBase.Open()
   at Devart.Data.PostgreSql.PgSqlConnection.Open()
   at SAserviceTest.ScriptInvocations.ScriptInvoker.ExecuteSqlScript(String sqlFileName, Object[] parameters) in 

В журнале PostgreSQL я нашел такие записи:

2012-12-13 15:04:41 CET DZIENNIK:  Could not receive data from client: Unknown winsock error 10061
2012-12-13 15:04:41 CET DZIENNIK:  Unexpected EOF on client connection

Я понятия не имею, что вызывает эти случайные ошибки. То же самое происходит на моей машине с локальным сервером PostgreSQL и на удаленном сервере сборки с удаленным сервером PostgreSQL.

Ошибки действительно случайны и никогда не возникают при выполнении одного теста - мне нужно выполнить несколько тестов один за другим, чтобы эта ошибка произошла. Нет проблем с ОЗУ / дисковым пространством / оборудованием.

1 ответ

Решение

Это довольно очевидно, проблема с соединением TCP, неожиданно закрывающимся с точки зрения сервера. Вопрос в том, почему. Звучит так, как будто что-то закрывает TCP-соединение или состояние повреждено. В любом случае это звучит так, как будто это происходит на более низком уровне, чем ваш собственный код.

Читая дамп стека, я задаюсь вопросом, реализует ли devart какой-то пул соединений внутри себя и соединение закрывается слишком рано. Учитывая, что это никогда не происходит в одном и том же месте в вашем коде, я думаю, что это тот случай, когда сообщение об ошибке, поданное разработчиками Devart, вероятно, будет наиболее продуктивным способом решения этой проблемы.

Другие вопросы по тегам