5

We are using sitecore publishing service 2.0. For couple of days things seemed to be working fine, but we have added the:

    <PromotionCoordinator>
      <Options>
        <RebuildDescendantsTable>true</RebuildDescendantsTable>
      </Options>
    </PromotionCoordinator>

to keep the descendants table up to date after publishes. The problem is that when I try to publish something, I have following error in the service logs:

2017-06-21 14:00:26.471 +02:00 [Information] Created manifest 690c673d-27bd-482a-8ce7-874e16272e5c, for target 8e080626-ddc3-4ef4-a1d1-f0be4a200254
2017-06-21 14:00:26.471 +02:00 [Information] Starting the manifest calculation for target : "web" (Id : 8e080626-ddc3-4ef4-a1d1-f0be4a200254)
2017-06-21 14:00:26.657 +02:00 [Information] Start building item index for target: 8e080626-ddc3-4ef4-a1d1-f0be4a200254
2017-06-21 14:01:26.177 +02:00 [Information] Item index built successfully for target: 8e080626-ddc3-4ef4-a1d1-f0be4a200254
2017-06-21 14:01:33.986 +02:00 [Information] Added 43 steps to manifest: 690c673d-27bd-482a-8ce7-874e16272e5c.
2017-06-21 14:01:33.986 +02:00 [Information] Starting to promote the manifests to all targets..
2017-06-21 14:01:34.046 +02:00 [Information] Starting to promote Target : "web", Manifest : 690c673d-27bd-482a-8ce7-874e16272e5c.
2017-06-21 14:03:47.713 +02:00 [Information] New Job queued : 71399e26-2175-48fe-aaa7-bf4b86e1ecf3 - Targets: "web"
2017-06-21 14:03:51.727 +02:00 [Error] Item Descendants Promote from "Master" to "web" failed. - Error: "Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding."
2017-06-21 14:03:51.727 +02:00 [Warning] An error occured running an operation on Manifest 690c673d-27bd-482a-8ce7-874e16272e5c, _connection "web". - Error: "Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding."
2017-06-21 14:03:51.728 +02:00 [Information] Rolling back the transaction for the operation on Manifest 690c673d-27bd-482a-8ce7-874e16272e5c, sourceStore "web".
2017-06-21 14:03:51.970 +02:00 [Error] One or more targets were not succesfully promoted.
System.AggregateException: One or more targets were not succesfully promoted.  The failed target(s) are: Manifest=690c673d-27bd-482a-8ce7-874e16272e5c Target=8e080626-ddc3-4ef4-a1d1-f0be4a200254.
 See inner exceptions for details. ---> System.AggregateException: One or more errors occurred. ---> System.Data.SqlClient.SqlException: Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding. ---> System.ComponentModel.Win32Exception: The wait operation timed out
   --- End of inner exception stack trace ---
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.SqlCommand.InternalEndExecuteNonQuery(IAsyncResult asyncResult, String endMethod, Boolean isInternal)
   at System.Data.SqlClient.SqlCommand.EndExecuteNonQueryInternal(IAsyncResult asyncResult)
   at System.Data.SqlClient.SqlCommand.EndExecuteNonQueryAsync(IAsyncResult asyncResult)

Where should I increase the timeout, and what might be the optimal value here? Also, could changing the timeout have impact on other, publish related activities?

  • This exception you are getting may be related to the fact that there are corrupted items on the database. Try to go into Sitecore Control panel, on the database section click the rebuild the link databases and see if this addresses your issue. – Diego Jun 21 '17 at 16:42
  • Possibly duplicate of: sitecore.stackexchange.com/questions/6127/… – Mark Cassidy Jun 21 '17 at 21:09
1

The short answer is this looks like a SQL command timeout. You can try increasing the command timeout (default is 120) via the appropriate connection behavior using the following configuration.

<Sitecore>
   <Publishing>
      <Services>
         <DbConnectionBehaviours>
            <Options>
               <Entries>            
                  <sql-backend-default>
                     <Options>                     
                        <CommandTimeout>xxxx</CommandTimeout>
                     </Options>
                  </sql-backend-default>
               </Entries>
            </Options>
         </DbConnectionBehaviours>
      </Services>
   </Publishing>
</Sitecore>

(Note: this increases the timeout for all databases, if you want to just restrict it to the target, you'll need to define a specific DbConnectionBehaviour and set that for the target connection).

The longer answer is that you should move away from using the Fast Query API, and use Content Search, which is more appropriate for querying larger content trees.

I'll try and justify this:

  • The Publishing Service is delivered on v8.0+. The Fast Query API is no longer recommended practice for any Sitecore solutions.

  • The Publishing Service was developed to improve performance with large solutions. The Fast Query API (and descendants table) is not appropriate for large solutions; that's a restriction imposed by the physics of trying to maintain descendants data in a relational store.

  • The Publishing Service is built on the concept of performing bulk updates on the underlying data store. The way in which descendants data must be modeled in a relational store does not allow for bulk updates - we cannot provide a solution that is in line with the tenants of the Publishing Service even if we wanted to.

  • Increasing the command timeout did the trick - after inspecting logs, I can see the publish with rebuilding descendants takes slightly more than 2 minutes. – jjczopek Jun 22 '17 at 10:47

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.