This blog is to discuss an indexing hang issue I found recently while I was working on a Commerce Connect Synchronization implementation. In my last blog post I mentioned, how a custom synchronization provider can be used to re-index items after importing the items from external commerce system. This was working fine but, recently I found that, as I run the synchronization, the synchronization status progress box spins for ever. To see what the progress box is doing, I started Fiddler and found that it’s checking the status of the job every 1000 milliseconds and the job is on hung state.

Not sure what’s going on, I took a memory dump of the worker process. I opened the hang dump in Windbg and started looking into clr stack of all threads running in the process. There are two stacks that got my attention. The one below showed that the custom link provider was called by index crawler and the thread was going to the wait state, waiting to acquire the lock it released.

The second thread that got my attention was the one below. This thread was started to refresh the index by the synchronization provider. This thread is going into sleep and holding the lock released by the above thread.

If I disable the custom link provider, indexing works fine again. I haven’t found any reference to this issue in internet. I would like to know if anyone saw this issue and if there is a solution for this. The version of Sitecore is 7.5 rev.141003.