Stored Data Reader Error

ERP Version: Epicor 10.1.500.22
SQL Version: 2016 (130)

Problem Category: Sales Configured Parts and Jobs

I’m trying to troubleshoot and error I’m getting when either creating a Configured Part or creating a Job for a configured part.

Usually when I get this error it’s an SQL error where I have a partial transaction log stuck and I just run a ‘Simple’ backup and clear out the transaction log. That was back in SQL 2000 and I haven’t had an error like this in years.

Has anyone run into this before?
Thanks for your help,
Jonathan

Here’s the full Application Error

Application Error

Exception caught in: Epicor.ServiceModel

Error Detail

Message: An error occurred while reading from the store provider’s data reader. See the inner exception for details.
Inner Exception Message: Lock request time out period exceeded.
Program: Epicor.ServiceModel.dll
Method: ShouldRethrowNonRetryableException

Client Stack Trace

at System.Data.Common.Internal.Materialization.Shaper1.StoreRead() at System.Data.Common.Internal.Materialization.Shaper1.SimpleEnumerator.MoveNext()
at System.Collections.Generic.List1..ctor(IEnumerable1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at Epicor.Data.DBExpressionCompiler.GetResult[TContext,TQuery,TResult](Func3 executeQuery, Cache cacheSetting, TContext dataContext, TQuery query) in C:_Releases\ICE\3.1.500.22\Source\Framework\Epicor.System\Data\DBExpressionCompiler.cs:line 425
at Epicor.Data.DBExpressionCompiler.InvokeList[TContext,TQuery,TResult](Expression expression, Cache currentCacheSetting, Boolean cacheQuery, TContext dataContext, Func2 getDataCacheKey, Func2 compileQuery, Func3 executeQuery) in C:\_Releases\ICE\3.1.500.22\Source\Framework\Epicor.System\Data\DBExpressionCompiler.cs:line 159 at Epicor.Data.DBExpressionCompiler.<>c__DisplayClass2_04.b__0(TContext context, TArg1 arg1, TArg2 arg2) in C:_Releases\ICE\3.1.500.22\Source\Framework\Epicor.System\Data\DBExpressionCompiler.Generated.cs:line 82
at Erp.Internal.Lib.JobHeadDelete._JobHeadDelete(JobHead JobHead) in c:_Releases\ERP\RL10.1.500\Source\Server\Internal\Lib\JobHeadShared\JobHeadDelete\delete.i.cs:line 196
at Erp.Triggers.JobHead.DeleteTrigger.delete(JobHead JobHead) in C:_Releases\ERP\UD10.1.500.22\Source\Server\Db\Triggers\JobHead\delete.cs:line 73
at Erp.Triggers.JobHead.DeleteTrigger.Delete(JobHead JobHead) in C:_Releases\ERP\UD10.1.500.22\Source\Server\Db\Triggers\JobHead\delete.cs:line 64
at Ice.Triggers.TriggerQueue.ExecuteDeleteTrigger(IceDataContext context, LinqRow originalRecord) in C:_Releases\ICE\3.1.500.22\Source\Framework\Epicor.System\Triggers\TriggerQueue.cs:line 259
at Ice.Triggers.TriggerQueue.RunDeleteTrigger(IceDataContext context, LinqRow linqRow) in C:_Releases\ICE\3.1.500.22\Source\Framework\Epicor.System\Triggers\TriggerQueue.cs:line 124
at Ice.IceDataContext.DeleteObject(Object entity) in C:_Releases\ICE\3.1.500.22\Source\Framework\Epicor.System\Data\IceDataContext.cs:line 210
at Ice.TablesetBound3.DeleteRow(IceDataContext dataContext, String tableName, LinqRow dbRow, TablesetProfilingCollector parentTraceCollector) in C:\_Releases\ICE\3.1.500.22\Source\Framework\Epicor.Ice\Services\TablesetBound.cs:line 1257 at Ice.TablesetBound3.DeleteRow(IceDataContext dc, Int32 tableNum, IIceTable tbl, IceRow row, TablesetProfilingCollector parentTraceCollector) in C:_Releases\ICE\3.1.500.22\Source\Framework\Epicor.Ice\Services\TablesetBound.cs:line 1229
at Ice.TablesetBound3.WriteTable(IceDataContext dataContext, Int32 tableIndex, IIceTable table, TablesetProfilingCollector parentTraceCollector) in C:\_Releases\ICE\3.1.500.22\Source\Framework\Epicor.Ice\Services\TablesetBound.cs:line 906 at Ice.TablesetBound3.InnerUpdate(IceDataContext dataContext, TFullTableset tableset) in C:_Releases\ICE\3.1.500.22\Source\Framework\Epicor.Ice\Services\TablesetBound.cs:line 797
at Erp.Services.BO.JobEntrySvc.Update(JobEntryTableset& ds) in C:_Releases\ERP\UD10.1.500.22\Source\Server\Services\BO\JobEntry\JobEntry.Designer.cs:line 7392
at Erp.Services.BO.JobEntrySvcFacade.Update(JobEntryTableset& ds) in C:_Releases\ERP\UD10.1.500.22\Source\Server\Services\BO\JobEntry\JobEntrySvcFacade.cs:line 4049
at SyncInvokeUpdate(Object , Object , Object )
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object inputs, Object& outputs)
at Epicor.Hosting.OperationBoundInvoker.InnerInvoke(Object instance, Func2 func) in C:\_Releases\ICE\3.1.500.22\Source\Framework\Epicor.System\Hosting\OperationBoundInvoker.cs:line 59 at Epicor.Hosting.OperationBoundInvoker.Invoke(Object instance, Func2 func) in C:_Releases\ICE\3.1.500.22\Source\Framework\Epicor.System\Hosting\OperationBoundInvoker.cs:line 47
at Epicor.Hosting.Wcf.EpiOperationInvoker.Invoke(Object instance, Object inputs, Object& outputs) in C:_Releases\ICE\3.1.500.22\Source\Framework\Epicor.System\Hosting\Wcf\EpiOperationInvoker.cs:line 23
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)

Inner Trace:
Lock request time out period exceeded.
: at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlDataReader.TryHasMoreRows(Boolean& moreRows) at System.Data.SqlClient.SqlDataReader.TryReadInternal(Boolean setTimeout, Boolean& more) at System.Data.SqlClient.SqlDataReader.Read() at System.Data.Common.Internal.Materialization.Shaper1.StoreRead()

at Epicor.ServiceModel.Channels.ImplBase`1.ShouldRethrowNonRetryableException(Exception ex, DataSet dataSets)
at Erp.Proxy.BO.JobEntryImpl.Update(JobEntryDataSet ds)
at Erp.Adapters.JobEntryAdapter.OnDelete()
at Ice.Lib.Framework.EpiBaseAdapter.Delete(DataRow dr)
at Erp.UI.App.JobEntry.Transaction.Delete()

Inner Exception

Lock request time out period exceeded.

I am having this same error when trying to delete a demand link for a configured part or trying to get details. Have you brought this up with Epicor or figured out what was causing it?

We did figure out the problem after I created a Deadlock monitor on the SQL server. It turned out to be a problem with the Configuration’s Method Rule Code. After deleting the Rule and rewriting it everything worked again.

Do you ever have it where your get details form just hangs and never does anything? We are not receiving the error anymore, but it seems to just hang.

Yes, it tries to unlock the data store that it locked. You have to find the Method Code that’s blocking the read and delete it.

It’s strange because there has never been a time where it has locked until now and we have not added any new method rules in the past 3 weeks. Not sure what is happening. It happens when I try to Delete Details as well and when I try to delete the demand link.

This is a Sales Order Configurator issue. Make sure your looking at the Method Rule Code. Did someone update the Method Rule Code in the Configurator?

Also, you may want to look at creating a Deadlock monitor or graph on the SQL database. See which tables are being locked during the process. I explained the steps we took to determine the issue and what we did to fix it above.

ok so what happens when you get this “lock request time out period exceeded” in things like MRP logs and multi-level pegging process… we are not using configured parts or quote. We don’t even own the configured parts module. we are on 10.1.500.31 currently. Any info is appreciated on how to find or locate the locks and what is causing them.