Hi,
I'm experiencing a problem with the assembly
"FirebirdSql.Data.FirebirdClient, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=3750abcc3150b00c".
Scenario:
I have a set of unit/integration tests which have a fare bit of setup data
and I am using an embedded database (fbembed.dll (and unicode related
dlls) - Firebird 2.0 RC4).
The unit tests (using NUnit here) have a [SetUp] attributed method which
does the following:
1. Copy an empty database to a temporary location.
2. Create a connection string pointing to the empty &
copied database at
the temporary location.
3. Load a lot of setup data.
Remark: The temporary database path is always the same.
The unit tests also have a [TearDown] attributed method which does the
following:
1. Clear all connection pools (Firebird).
When the first unit test of series runs everything works as expected:
1. The setup method gets called, an empty database is
created and
prefilled with setup data
2. The test runs
3. The test fails on a certain assertion
4. The teardown method gets called, and the connection pools
are
cleared.
When the second unit test of the series runs the following happens (assuming
connection pooling is ON):
The setup method gets called, an empty database is created
and while
prefilling the database with setup data
the code hangs for no apparant reason.
1. Where does it hang? The offending method is
FirebirdSql.Data.Client.Embedded.FesStatement.Allocate()
2. Where exactly in this method does it hang? The call to
FbClient.isc_dsql_allocate_statement(statusVector,ref dbHandle,ref
stmtHandle); hangs
3. It is deterministic in the sense it is always this method
call which
makes everything hang (it does not return).
4. The statement being executed is a select statement (it's
a lookup to
see if a record with a given value in a given column already appears in the
database).
5. All insert and select statements are running inside a
transaction
with an isolation level of read committed.
6. Foreach run of a test the path of the temporary database
When the second unit test of the series runs the following happens (assuming
connection pooling is OFF):
The setup method gets called, an empty database is copied
and I get a
nice exception stating the database is still in use by another process
(remember the previous run did a clear of the connection pools).
Upon getting the connection pool count for the database I
cannot copy to
(because on each run the path of the temporary database is the same), I get
that there are no pools for the given database.
Weird!
Any help appreciated.
|
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Firebird-net-provider mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/firebird-net-provider