cancel
Showing results for 
Search instead for 
Did you mean: 

SIS - polling failures result in too many cursors open error

Former Member
0 Kudos
6,743

We had an Ultralite device running SIS last night with a polling frequency of 1 minute. This has been running without incident for I don't know how long. Last night someone shut down the server being polled.

This morning the device had a huge log file containing 64 "Mobilink communication errors -- code 63, parameter: , system code: 10061". After these logged errors the rest of the log file contains "ULException: Too many open cursors".

Looking through our code after the try there is a finally with select.Dispose(). Which I thought would close the cursor regardless of success/failure. So my only thought is there is something special about calling ml-get-server-notification which isn't closing the cursors.

Does anyone have any ideas what might have happened? Do I need to also assign null to my select statement? Is that needed to help close the cursors? Do the cursors close after 2 minutes and the frequency was simply too fast for automatic closing to take care of it? Is there any underlying issue that if ml-get-server-notification fails it doesn't close the cursor?

The server is using version 12.0.1.3726, for both Mobilink and SQL Anywhere.

The log errors where it switches from mobilink communication error to too many cursors open.

8/26/13 3:31:07 PM-iAnywhere.Data.UltraLite.ULException: MobiLink communication error -- code: 63, parameter: , system code: 10060
at iAnywhere.Data.UltraLite.ULConnection.RuntimeErrorCheck()
at iAnywhere.Data.UltraLite.ULDataReader.GetRowCount(Int32 threshold)
at iAnywhere.Data.UltraLite.ListSourceBase.InitFromTable()
at iAnywhere.Data.UltraLite.ListSourceBase..ctor(ULDataReader table)
at iAnywhere.Data.UltraLite.ULDataReader..ctor(ULConnection conn, CommandBehavior cmdBehavior, ULCommand parent, IntPtr natRS, ULCursorSchema schema)
at iAnywhere.Data.UltraLite.ULCommand.executeReaderInternal(CommandBehavior cmdBehavior, Boolean readOnly)
at iAnywhere.Data.UltraLite.ULCommand.ExecuteScalar()
at OurCompany.Ultralite.DataCommand.LoadValue()
at OurCompany.Sybase.LightWeightPoller.MobilinkPoller.SISPoll(Object stateInfo)
at System.Threading.Timer.ring()

8/26/13 3:31:23 PM-iAnywhere.Data.UltraLite.ULException: Too many open cursors
at iAnywhere.Data.UltraLite.ULConnection.RuntimeErrorCheck()
at iAnywhere.Data.UltraLite.ULCommand.executeReaderInternal(CommandBehavior cmdBehavior, Boolean readOnly)
at iAnywhere.Data.UltraLite.ULCommand.ExecuteScalar()
at OurCompany.Ultralite.DataCommand.LoadValue()
at OurCompany.Sybase.LightWeightPoller.MobilinkPoller.SISPoll(Object stateInfo)
at System.Threading.Timer.ring()

The ultralite select statement being called

"select ml_get_server_notification('{0}', 'tcpip{{host={1};port={2}}}', '{3}')"

Accepted Solutions (0)

Answers (0)