Matthew
Matthew

Reputation: 41

Sitecore.Analytics.Exceptions.ContactLockException

I am running Sitecore 8.2 with one CM server and 3 CD servers. On only one of our CD servers we keep getting the following error:

5396 2017:12:18 00:00:59 ERROR Cannot finish Analytics page tracking
Exception: Sitecore.Analytics.Exceptions.ContactLockException
Message: Failed to extend contact lease for contact e629daf6-1176-4c55-9c17-31b45292212c
Source: Sitecore.Analytics
at Sitecore.Analytics.Tracking.ContactManager.SaveAndReleaseContact(Contact contact)
at Sitecore.Analytics.Pipelines.EndAnalytics.ReleaseContact.Process(PipelineArgs args)
at (Object , Object[] )
at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, Boolean failIfNotExists)
at Sitecore.Analytics.Pipelines.EndAnalytics.EndAnalyticsPipeline.Run()
at Sitecore.Analytics.Pipelines.HttpRequest.EndAnalytics.Process(HttpRequestArgs args)

I confirmed I could telnet to Mongo. I compared the config files with what is on the other CD servers. Code base is exactly the same as other two environments as well. Does anyone have any suggestions on what to check next? I feel like I missed something on this one server since it is the only one having this issue.

Upvotes: 0

Views: 986

Answers (1)

Ahmed Okour
Ahmed Okour

Reputation: 2422

You probably need to make sure that Analytics.ClusterName in (Sitecore.Analytics.Tracking.config) is unique per CD site, Sitecore uses this as unique identifier of the cluster that is locking the contact, When the user session requests travels between the 3 CD servers, xDB on CD1 for example might fail to release it if its locked on the other CDs (2&3).

What you can do is :

  1. Make sure each CD server have unique domain or sub-domain (eg, prod1.mywebsite.com, prod2.mywebsite.com ..etc ), I dont usually make these unique domains publicly accessible (DNS) , but rather just make it accessible within the network, as long as each CD can talk to the other CD servers by their unique domains
  2. Update Analytics.ClusterName on each CD server to the unique domain that you assigned to it.

CORRECTION:

I contacted sitecore support to get further details, and they told me that if you have single cluster for multiple CD servers, Then you should use the same Analytics.ClusterName for all CD servers, If you have multiple clusters and each cluster is using different session database, then CD servers within each cluster should have the same Analytics.ClusterName that is unique per cluster, So my above answer needed this correction.

Upvotes: 1

Related Questions