Hi All,
I've tried searching and cannot find an answer to an issue we are experiencing at a customer site. I've been talking with Avaya support and they've suggested that I post the question here.
The issue that we are having is that the customer's IQ system is experiencing a critical failure every few days due to excessive numbers of sessions being active.
If we run the following query on the database we get 1000s of results:
select count(*) from SESSIONPARAMUSER;
We believe this is caused by a custom application that's been written by us. We've been able to duplicate this issue in the lab with a test application with very little code. As far as we can tell the code does what the Avaya API documentation says should be done. The API is the "Avaya IQ Data Export web service".
When the test application first starts up it will request an Avaya IQ Session like this:
_sessionID = _iqDataExportClient.startSession(txtUserName.Text, txtPassword.Text);
Then when you press a button to run a report it will run this code:
try
{
reportExecutionID = _iqDataExportClient.requestSDEReport(_sessionID, Txt_ReportName.Text, txtParams.Text, "CSV");
Result = _iqDataExportClient.executeSDEReport(_sessionID, reportExecutionID);
_iqDataExportClient.releaseData(_sessionID, reportExecutionID);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
You can press that button as many times as you like and the SESSIONPARAMUSER table will increase by 1 each time.
When the application closes down it will end the session like this:
try
{
_iqDataExportClient.endSession(_sessionID);
_sessionID = "";
}
catch (Exception ex)
{
MessageBox.Show("Error ending Session: " + ex.Message);
}
Can anybody please suggest why the code to run the report uses up a session that doesn't get released? I believe it's the requestSDEReport() function that's opening the session, and my understanding was that releaseData should release it.
Many Thanks
Kevin
|