我正在使用 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 服务器也是如此。
错误是真正随机的,并且在运行单个测试时永远不会发生 - 我必须一个接一个地运行一堆测试才能发生此错误。不涉及 RAM/磁盘空间/硬件问题。