IDS 7 -> 11 upgrade problems
Posted in 2008
Topics: Installation, Setup & Upgrades, Internationalization & Character Sets, Versions, Editions & End-of-Life
We're trying to upgrade a customer's system from IDS 7.31 to 11.10FC2W3.
It's been a bit of a nightmare, as there's a bug in the upgrade [rocedure
which causes IDS to assert fail with certain constructions of stored
procedure, how ever we're past that now with a somewhat time-consuming
workaround.
Most of it tests out OK now but:
They have a .net web service which sits on a Windows 2003 server. It
couldn't connect at all with CSDK 2.9. We've installed the latest CSDK
(3.5) instead.
If we point the Web Service at a v7.31 database that we can call it 5000
times without an error.
If we point the Web Service at v11, and call the service 500 times, it
errors 60 times approx. Each time it errors a connection is left on the
database. The error returned is:
System.Web.Services.Protocols.SoapException: This IfxTransaction has
completed; it is no longer usable.
When we call the web service we always pass the same parameters so the same
code should always be called. The error is not return by the same function
each time, it occurs in different parts of the code.
We use the .Net Framework v1.1 DLL supplied in the Informix Client SDK to
connect to the database. An example of the error return by the Web Service
is attached, you can see reference to IFX* functions.
On the server side I have tried:
NETTYPE soctcp,2,100,NET # Configure poll threads
NETTYPE ipcshm,1,20,CPU # Configure poll threads
having previously had:
NETTYPE soctcp,1,100,NET # Configure poll threads
NETTYPE ipcshm,1,20,CPU # Configure poll threads
Any ideas welcome. IBM PMR 55771,999,866 refers.
thanks
Neil Truby t:01932 724027
Director m:07798 811708
Ardenta Limited e:neil.truby@ardenta.com
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>This IfxTransaction has completed; it is no longer
usable.</faultstring>
<faultactor>at IBM.Data.Informix.IfxTransaction.Rollback()
at IBM.Data.Informix.IfxTransaction.Dispose(Boolean disposing)
at IBM.Data.Informix.IfxTransaction.System.IDisposable.Dispose()
at IBM.Data.Informix.IfxConnection.DisposeClose()
at IBM.Data.Informix.IfxConnection.Close()
at IBM.Data.Informix.IfxConnection.ConnectionIsAlive()
at IBM.Data.Informix.IfxConnection.HandleErrorNoThrow(IntPtr hHandle,
SQL_HANDLE hType, RETCODE retcode)
at IBM.Data.Informix.IfxConnection.HandleError(IntPtr hHandle, SQL_HANDLE
hType, RETCODE retcode)
at IBM.Data.Informix.IfxCommand.Prepare()
at IBM.Data.Informix.IfxParameter.Bind(IfxDataReader tmpReader, IntPtr
stmt, IfxCommand parent, Int16 ordinal, CNativeBuffer valueBuffer,
CNativeBuffer lenIndBuffer)
at IBM.Data.Informix.IfxCommand.ExecuteReaderObject(CommandBehavior
behavior, String method)
at IBM.Data.Informix.IfxCommand.ExecuteReader(CommandBehavior behavior)
at IBM.Data.Informix.IfxCommand.ExecuteReader()
at IBM.Data.Informix.IfxCommand.System.Data.IDbCommand.ExecuteReader()
at GotDotNet.ApplicationBlocks.Data.AdoHelper.ExecuteReader(IDbCommand
command, AdoConnectionOwnership connectionOwnership)
at GotDotNet.ApplicationBlocks.Data.AdoHelper.ExecuteReader(IDbCommand
command)
at QuoteService.DataAccessComponents.QuoteDAL.getPolicyOption(String
CompanyCode, String ProductType, String PolicyOptionType, String
OptionIndicator, String OptionToValidate)
at QuoteService.BLComponents.QuoteValidator.ValidatePolicyOption(String
CompanyCode, String ProductType, String PolicyOptionType, String
OptionIndicator, String OptionToValidate)
at
QuoteService.BLComponents.QuoteValidator.ValidateTwoYearIndicator(String
CompanyCode, String ProductType, String PolicyOptionType, String
TwoYearIndicator)
at QuoteService.BLComponents.QuoteValidator.Validate(TLifeAssuredDetails
LifeAssuredDetails1, TLifeAssuredDetails LifeAssuredDetails2, QuoteRequestTO
quoteReq, TProduct product)
at QuoteService.BLComponents.BQuote.GetQuote(QuoteRequestTO QuoteReq)
at QuoteService.QuoteWebService.GetQuote(QuoteRequestTO
QuoteReq)</faultactor>
<detail>
<code>SYSERR</code>
<description>This IfxTransaction has completed; it is no longer
usable.</description>
<type>System</type>
<businessArea>SWAN</businessArea>
<source>NONE</source>
<guid>90544582-27be-4b98-b91f-487802b4024c</guid>
<detail>
<code>
</code>
<description>
</description>
<type>Error</type>
<businessArea>
</businessArea>
<source>at IBM.Data.Informix.IfxTransaction.Rollback()
at IBM.Data.Informix.IfxTransaction.Dispose(Boolean disposing)
at IBM.Data.Informix.IfxTransaction.System.IDisposable.Dispose()
at IBM.Data.Informix.IfxConnection.DisposeClose()
at IBM.Data.Informix.IfxConnection.Close()
at IBM.Data.Informix.IfxConnection.ConnectionIsAlive()
at IBM.Data.Informix.IfxConnection.HandleErrorNoThrow(IntPtr hHandle,
SQL_HANDLE hType, RETCODE retcode)
at IBM.Data.Informix.IfxConnection.HandleError(IntPtr hHandle, SQL_HANDLE
hType, RETCODE retcode)
at IBM.Data.Informix.IfxCommand.Prepare()
at IBM.Data.Informix.IfxParameter.Bind(IfxDataReader tmpReader, IntPtr
stmt, IfxCommand parent, Int16 ordinal, CNativeBuffer valueBuffer,
CNativeBuffer lenIndBuffer)
at IBM.Data.Informix.IfxCommand.ExecuteReaderObject(CommandBehavior
behavior, String method)
at IBM.Data.Informix.IfxCommand.ExecuteReader(CommandBehavior behavior)
at IBM.Data.Informix.IfxCommand.ExecuteReader()
at IBM.Data.Informix.IfxCommand.System.Data.IDbCommand.ExecuteReader()
at GotDotNet.ApplicationBlocks.Data.AdoHelper.ExecuteReader(IDbCommand
command, AdoConnectionOwnership connectionOwnership)
at GotDotNet.ApplicationBlocks.Data.AdoHelper.ExecuteReader(IDbCommand
command)
at QuoteService.DataAccessComponents.QuoteDAL.getPolicyOption(String
CompanyCode, String ProductType, String PolicyOptionType, String
OptionIndicator, String OptionToValidate)
at QuoteService.BLComponents.QuoteValidator.ValidatePolicyOption(String
CompanyCode, String ProductType, String PolicyOptionType, String
OptionIndicator, String OptionToValidate)
at
QuoteService.BLComponents.QuoteValidator.ValidateTwoYearIndicator(String
CompanyCode, String ProductType, String PolicyOptionType, String
TwoYearIndicator)
at QuoteService.BLComponents.QuoteValidator.Validate(TLifeAssuredDetails
LifeAssuredDetails1, TLifeAssuredDetails LifeAssuredDetails2, QuoteRequestTO
quoteReq, TProduct product)
at QuoteService.BLComponents.BQuote.GetQuote(QuoteRequestTO QuoteReq)
at QuoteService.QuoteWebService.GetQuote(QuoteRequestTO
QuoteReq)</source>
<guid>
</guid>
</detail>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
> They have a .net web service which sits on a Windows 2003 server. It > couldn't connect at all with CSDK 2.9. We've installed the latest CSDK > (3.5) instead. 3.5? I thought the latest was 3.00. Anyway, it includes an ADO.Net 2.0 driver. Is the application written in .Net 1.1 or .Net 2.0 (or later)? If you are using a 1.1 Informix driver, I wouldn't be surprised if it was buggy connecting to 11.10. The 1.1 driver came out in the 9.3 or 9.4 time period. And it was buggy then. I wouldn't expect it to play well with an engine that hadn't even come out yet. It seems to me that the .Net drivers from IBM/Informix have been less used and somewhat more problematic than other connection technologies. That said, we used the 1.1 and 2.0 drivers for production applications at my last employer. > If we point the Web Service at a v7.31 database that we can call it 5000 > times without an error. > > If we point the Web Service at v11, and call the service 500 times, it > errors 60 times approx. Each time it errors a connection is left on the > database. The error returned is: To me, it looks like the error is in the prepare. (That is the part of the call stack where it starts to call error handling routines.) I wonder if some new query caching could be involved? Are you seeing any errors on the server side? Have you turned on the query tracing (or is that 11.5?) to see if the database is throwing an error to the client? One other thing comes to mind. There is a cdotnet.sql procedure in the Client SDK that has to be executed against the sysmaster database. Has that been done on the new engine? I don't know that I really helped, but maybe something will lead to a real solution... Sean
"The Durster" <seandurity@gmail.com> wrote in message news:de8a158d-2fa5-4746-9087-6828fe17edc7@79g2000hsk.googlegroups.com... >> To me, it looks like the error is in the prepare. (That is the part of the call stack where it starts to call error handling routines.) I wonder if some new query caching could be involved? Are you seeing any errors on the server side? Have you turned on the query tracing (or is that 11.5?) to see if the database is throwing an error to the client? Thanks. In fact it seems it's anotehr bug, this time is CSDK: IC55046 HEAVY LOAD IN A MULTITHREAD APPLICATION CAN LEAVE THREADS WAITING INDEFINITY TO ACQUIRE THE CONNECTION MUTEX