14

I was looking for a fallback for Analytics when MongoDB was not available anymore and the "Submit queue" was exactly what I needed on paper.

My Issue

It seems that the "Sitecore.Analytics.SubmitQueueService" is not running.

Expected result

When MongoDB is down, a queue file will be created in Data\Submit-Queue. This file will be flushed in MongoDB, when the server is reachable again, resulting in eventually deleting the file (or at least getting smaller in size).

What happens

The queue file is only created when MongoDB is down, which is good. However, the file keeps growing over time, even though the MongoDB server is back online.

What I did

Set .config files according to this article.

\App_Config\Include\Sitecore.Analytics.Tracking.Database.config

<submitQueue> 
    <backgroundService type="Sitecore.Analytics.SubmitQueueService, Sitecore.Analytics"> 
       <!-- Service wakeup interval in seconds. --> 
       <Interval>60</Interval> 
    </backgroundService> 
</submitQueue>

\App_Config\Include\Sitecore.Analytics.Tracking.config

<setting name="Analytics.UseSubmitQueue" value="true" />

\App_Config\Include\Sitecore.Analytics.MongoDb.config

<mongo recoveryTimeout="60">
      <driver type="Sitecore.Analytics.Data.DataAccess.MongoDb.MongoDbDriver, Sitecore.Analytics.MongoDB">
        <param desc="connectionString">$(0)</param>
        <param desc="failOnReadErrors">false</param>
      </driver>
</mongo>

\App_Config\Include\Sitecore.Analytics.config

<setting name="Analytics.FailOnDatabaseErrors" value="false" />

Testing

I made sure a queue file is created (So MongoDB is made inaccessible).

After this, I start the MongoDB server again to see if my queue file is shrinking. Sadly it is not, it grows.

I also checked my logs from the moment that I started MongoDB again, but no logs are indicating something is wrong. It was also not running in the background as a Job (assuming it is Sitecore Job).

Enviroment

  • Sitecore.NET 8.2 (rev. 161221)

Additional problem

There still seem to be MongoDB connection errors, even though Submit queue should be active.

[DatabaseNotAvailableException: Database not available]
     Sitecore.Analytics.Data.DataAccess.MongoDb.MongoDbCollection.Execute(Action action, ExceptionBehavior exceptionBehavior) +110
     Sitecore.Analytics.Data.DataAccess.MongoDb.MongoDbCollection.Save(Object value) +155
     Sitecore.Analytics.Data.DataAccess.MongoDb.MongoDbDataAdapterProvider.Update(IUpdatableObject container) +418
     Sitecore.Analytics.Pipelines.SubmitSessionContext.SaveClassificationsMap.Process(SubmitSessionContextArgs args) +1152
  ...

Hopefully I gave enough information!

  • 3
    I don't have an answer for this, but woah... great question and details! You should definitely get this into the support team as well. – Jason St-Cyr Sep 16 '17 at 13:15
  • I would submit this to Sitecore support. Sounds like a good find. – Chris Auer Feb 9 '18 at 15:13
  • Interesting.. is the SubmitQueue background service running once you re-enabled MongoDB? – phani Feb 12 '18 at 19:08
  • 1
    I just installed a clean instance of 8.2 update 2 and saw the expected behavior. It took a while for it to create the submit queue file after stopping Mongo, but when I started it again the file was deleted within a minute or so. Are you certain that your Mongo service is running and accessible? – Ben Golden Feb 16 '18 at 6:18
  • 1
    Closing the question down, as there will never be an accepted answer/resolution but the comment trail may still be useful. – Mark Cassidy Sep 21 '18 at 16:34