3

We have a - typically intermittent but becoming more common - issue with Tridion publishing. The error appears to be around resolving items and that a stored procedure, EDA_ITEMS_GETPUBLISHITEMS is the culprit.

Tridion Event Logs are showing this procedure is timing out, according to the stack trace:

Unable to resolve the items to be (un)published. Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

Error Code: 0x8004033F (-2147220673)

Call stack: System.Data.SqlClient.SqlConnection.OnError(SqlException,Boolean) System.Data.SqlClient.SqlInternalConnection.OnError(SqlException,Boolean) System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() System.Data.SqlClient.TdsParser.Run(RunBehavior,SqlCommand,SqlDataReader,BulkCopySimpleResultSet,TdsParserStateObject) System.Data.SqlClient.SqlDataReader.ConsumeMetaData() System.Data.SqlClient.SqlDataReader.get_MetaData() System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader,RunBehavior,String) System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior,RunBehavior,Boolean,Boolean) System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior,RunBehavior,Boolean,String,DbAsyncResult) System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior,RunBehavior,Boolean,String) System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior,String) System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior) System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior) Tridion.ContentManager.Data.AdoNet.DatabaseUtilities.ExecuteReader(StoredProcedureInvocation,CommandBehavior) Tridion.ContentManager.Data.AdoNet.Sql.SqlDatabaseUtilities.ExecuteReader(StoredProcedureInvocation,CommandBehavior) Tridion.ContentManager.Data.AdoNet.DatabaseUtilities.ExecuteReader(StoredProcedureInvocation) Tridion.ContentManager.Data.AdoNet.Sql.SqlDatabaseUtilities.ExecuteReader(StoredProcedureInvocation) Tridion.ContentManager.Data.AdoNet.IdentifiableObjectDataMapper.Tridion.ContentManager.Data.IIdentifiableObjectDataMapper.GetListResolvedItems(TcmUri,ResolveInstructionData,IEnumerable1) Tridion.ContentManager.Publishing.Resolving.ResolverBase.ResolveDataObjects(IEnumerable1,ResolveInstruction,IEnumerable1) Tridion.ContentManager.Publishing.Resolving.ResolverBase.Resolve(IEnumerable1,ResolveInstruction,IEnumerable1) Tridion.ContentManager.Publishing.Resolving.ResolveEngine.ResolveItems(IEnumerable1,ResolveInstruction,IEnumerable`1) Tridion.ContentManager.Publishing.Resolving.ComWrapper.ResolveEngineFacade.GetListPublishItems(UserContext,String,String[],Boolean,Boolean,ListColumnFilter,String) Component.GetListPublishItems

We have asked the DB team to check the server several times, and each time they can find nothing obvious wrong. We do have a custom resolver running, but the issue was present before that was deployed.

There seems to be no obvious pattern - it has happened publishing via Workflow and manually, on documents that are widely used across many publications and on dynamic component presentations that are only used on a few pages.

Whilst I could ask the DB team to increase timeouts, most of failures will work ... eventually, and they are reluctant to do so, citing the application.

We're running Tridion 2011 SP1 if that makes any difference. What should we be looking at to resolve?

  • 1
    Do you have your DB maintenance plan in place as recommended by SDL in their SDL Tridion Maintenance document? Essentially, you should have your DB health good and running the maintenance scripts - re-indexing etc. - at least weekly or may be daily or more frequent depending on your usages – Pankaj Gaur Apr 8 '16 at 13:26
  • The DB team is outsourced so I don't know off hand, but I could only find documentation for maintaining Oracle and our CM database is on MSSQL? – Dave Forber Apr 8 '16 at 14:02
  • I'll look up the documentation, they need to collect statistics regularly (I'd recommend daily) – Nuno Linhares Apr 8 '16 at 15:31
  • You must request your DBAs to provide the health of tridion DBs. Also, you can probably find the maintenance related tasks for SDL Tridion 2011 SP1 here - sdltridionworld.com/downloads/documentation/SDLTridion2011SP1/… look for either in User Manual or in the Installation Guide – Pankaj Gaur Apr 8 '16 at 15:51
  • forgot to tell, the above URL requires login with your SDL provided credentials – Pankaj Gaur Apr 8 '16 at 15:52
6

We never included the work required to maintain SQL Server, because the scripts you need to run are standard SQL Server stuff rather the Oracle ones, which we provide.

Basically, your team needs to ensure they run sp_updatestats regularly on the CM database, I tend to run this daily.

More info about this script here: https://stackoverflow.com/questions/20889776/how-often-should-sp-updatestats-be-called

  • Yep, it seems to have been this. Apologies for the delay in accepting -- it took that long to get the work done (yes, really), but the job is now running nightly and there have been no issues with this now since Sunday. Thanks very much. – Dave Forber Apr 26 '16 at 9:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.