Accelerator Searches hang or fail with Event ID 285 and Event ID 296 errors indicating a Timeout expired

book

Article ID: 100033547

calendar_today

Updated On:

Description

Error Message

Type :        Error
Event :        285
Source :        Accelerator Service Processor
Description:
APP AT - Customer ID: X - An Error has occured while bulk inserting search items. System.Data.SqlClient.SqlException: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
   at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
   at System.Data.SqlClient.TdsParserStateObject.ReadBuffer()
   at System.Data.SqlClient.TdsParserStateObject.ReadByte()
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteScalar()
   at KVS.Accelerator.Common.TraceDLCommand.ExecuteScalar(IDbCommand command, Boolean RetryDLs)
   at KVS.Accelerator.Common.TraceDLCommand.ExecuteScalar(IDbCommand command)
   at KVS.Accelerator.Search.SearchItems.InsertBulkSearchItem(SearchResults results)


Type :        Error
Event :        296
Source :        Accelerator Service Processor
Description:
APP AT - Customer ID: X - Error processing bulk search items: Unrecoverable error bulk inserting search items. System.Data.SqlClient.SqlException: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
   at KVS.Accelerator.Search.SearchItems.InsertBulkSearchItem(SearchResults results)
   at KVS.Accelerator.Search.SearchQueues.SearchResultsProcessWork(ThreadSafeQueue& theQueue, Object queuedItem)


Type :        Error
Event :        311
Source :        Accelerator Service Processor
Description:
APP AS - Customer ID: X - An error has occured when initializing a Search. System.Data.SqlClient.SqlException: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
   at KVS.Accelerator.Search.Search.GetDS(Int32 departmentID, SearchServerFilterCriteria filter) -


Type :        Error
Event :        321
Source :        Accelerator Service Processor
Description:
APP AS - Customer ID: 1 - An error has occured when initializing a Search. System.Data.SqlClient.SqlException: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
   at KVS.Accelerator.Search.Search.GetDS(Int32 departmentID, SearchServerFilterCriteria filter)
   at KVS.Accelerator.Search.Searches.GetAllSearchesDS(Int32 departmentID, SearchServerFilterCriteria filter)


Type :        Error
Event :        99
Source :        Accelerator Service Processor
Description:
APP AT - Customer ID: 1 - An error occured deleting folders. System.Data.SqlClient.SqlException: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at KVS.Accelerator.Case.Case.DeleteCases()


Type :        Error
Event :        160
Source :        Accelerator Service Processor
Description:
APP AT - Customer ID: 1 - No delegate! System.Data.SqlClient.SqlException: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
   at KVS.Accelerator.Case.Case.DeleteCases()
   at KVS.Accelerator.Common.ScheduledThread.WorkerThread()

 

Cause

The search processing in the Accelerator Customer SQL database does not complete in a timely manner and is being terminated by the Accelerator Customer's pre-configured timeout. Timeouts are a necessary component of SQL database connections as they perform the valuable function of terminating SQL connections should the SQL server become unavailable or unresponsive, experience network connectivity issues or loss, or take an extended amount of time to execute a data processing request.  Under such conditions, not having any timeouts would cause any applications requesting database access or data processing to appear to hang indefinitely. Timeouts alert such applications and allow for corrective actions to be taken.

Other factors that can cause timeouts include:
- Extensive Accelerator activity exceeding the SQL server's processing capacity with its current resource configuration.
- The SQL server does not have adequately provisioned resources to efficiently handle the data processing requests.
- Antivirus on the SQL server may be interfering with data processing (please refer to the Related Articles section).

 

Resolution

The default timeouts in the Accelerators are usually sufficient for most environments. Prior to editing the Accelerator timeouts, it is recommended to investigate the SQL server for any potential issues in the areas listed above. If no issues are found, or the timeout issue is seen after remediation of the above potential issue areas, the Accelerator timeouts may need to be increased as follows:

1. Access the EVBAAdmin administration website on the Accelerator server whilst logged in as the Vault Service Account (VSA) by browsing to http://localhost/evbaadmin .

2. Select the Customer in question and note the current timeout settings under the Database Details section. The Customer may be determined by obtaining the Customer ID from the Event description, querying the tblCustomer table in the Accelerator Configuration database (as below) and cross-referencing the Customer ID to obtain the Customer Name.

SELECT CustomerID
, Name AS 'Customer Name'
, Server AS 'SQL Server'
, InitialCatalog AS 'Customer Database Name'
, ConnectionTimeOut
, ConnectionLifeTime
, MaxPoolSize
FROM tblCustomer
WHERE Type IN (50 /*CA*/, 51 /*DA*/)
ORDER BY CustomerID;
 

Here is a description of each setting:

- Connection Time Out: Specifies the amount of time in seconds to wait for connections to the customer database to complete before terminating the attempt and generating an error. Default: 500.
- Connection Life Time: Specifies the time in seconds that a connection to the customer database is considered valid. When the time has elapsed, the connection is disposed of. Default: 200.
- Max Pool Size: Specifies the maximum number of database connections that can be simultaneously opened to the customer database. Default: 300.

3. Right-click on the Customer | Properties | Edit the timeout settings as follows | OK.

- Connection Time Out: set to 5000.
- Connection Life Time: set to 2000.
- Max Pool Size: set to 500.

4. Repeat for any other Accelerator Customer databases exhibiting the issue.

5. Restart the Enterprise Vault Accelerator Manager Service (EVAMS) on the Accelerator server and monitor the Event Logs for any more Timeout expired occurrences.

If the Timeout expired entries are still seen, the timeouts may be further increased, as follows:

- Connection Time Out: set to 50000.
- Connection Life Time: set to 20000.
- Max Pool Size: set to 500 (not recommended to increase this setting beyond 500 as this will increase the number of SQL connections and could adversely affect data processing).

Issue/Introduction

Compliance Accelerator (CA) and Discovery Accelerator (DA) searches hang or fail and log Event ID 285 and Event ID 296 entries in the Enterprise Vault (EV) Event Log on the Accelerator server. The event description may vary slightly depending on the search's current processing stage. However, the event focus will be Timeout expired. Please see below for sample event entries. Additional errors may also be logged referencing Event ID 311, Event ID 321, Event ID 99 and Event ID 160. These entries may reference searches or may reference other Accelerator functions. As before, the description within these additional errors may vary but the focus of the event will be Timeout expired.

Additional Information

ETrack: 3907674