The xdb-index-token record in the xdb Solr core

Hello Community,

I faced an issue that on a newly installed Sitecore 9.2 and xConnect environment, the imported contact lists and the contacts in it do not get displayed in the List Manager.

This works on my local machine and it just does not work on the target environment.

In the xConnect Index Worker log, it is filled with the following error with a lot of attempts:

2020-01-14 08:33:22.605 +11:00 [Error] Failed indexing next set of changes. There will be an attempt to recover from the failure.
System.Threading.Tasks.TaskCanceledException: A task was canceled.
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Sitecore.Xdb.Collection.Search.Solr.SolrClient.<SendGetRequestAsync>d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Sitecore.Xdb.Collection.Search.Solr.SolrReader.<GetDataCurrentlyIndexedToken>d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Sitecore.Xdb.Collection.Indexing.IndexReaderCountersDecorator.<GetDataCurrentlyIndexedToken>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Sitecore.Xdb.Collection.Indexing.Indexer.<<GetDataCurrentlyIndexedToken>b__12_0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Sitecore.Xdb.Collection.Indexing.Indexer.<GetDataCurrentlyIndexedToken>d__12.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Sitecore.Xdb.Collection.Indexing.IndexerExtensions.<IndexNextChangesSimple>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Sitecore.Xdb.Collection.Indexing.SingleThreadedIndexer.<IndexNextChangesWithTiming>d__8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Sitecore.Xdb.Collection.Indexing.SingleThreadedIndexer.<RunInThread>d__6.MoveNext()

After some research, I noticed that when this happens, it sends a GET request to solr.instance/.../select. And the call returns no record:

{ "responseHeader":{ "status":0, "QTime":0, "params":{ "q":"id:xdb-index-token", "_":"1578982726190"}}, "response":{"numFound":0,"start":0,"docs":[] }}

While on a working core, it should return something like below:

{ "responseHeader":{ "status":0, "QTime":0, "params":{ "q":"id:xdb-index-token", "_":"1578976502931"}}, "response":{"numFound":1,"start":0,"docs":[ { "id":"xdb-index-token", "xdbtokenbytes_s":"BASE64EncodedStringOmitted", "_version_":1652575648059752448}] }}

I have tried rebuilding the xDB index and the xdb core did get rebuilt (I can see the physical core folder cleaned up and files repopulated) but the only 1 document it created in the core is the rebuild status itself.

Does any know how the xdb-index-token document in the core is created in the first place and how can I regenerate it?

It is mentioned here https://sitecore.stackexchange.com/a/18876 that we should look at /sitecore/system/List Manager/ListOperations but I do not have any subitems under the node.

Any thoughts would be greatly appreciated!

Thanks,
Dennis


  • Thanks for everyone who read this.

    First of all, this appears to be an environment-specific issue and we had this fixed by slightly reconfiguring the infrastructure.

    The xdb-index-token record in the Solr xdb core did get generated when rebuilding the xDB index if anyone is curious :)