The problem is in class IndexerFactory, in the static member called "indexer". Whenever any of the "getIndexer(...)" methods is called it creates a new indexer and assigns it to this member. This works fine in single-threaded environments, but in multi-threaded ones, there can be collisions between different threads entering at the same time into the "getIndexer()" functions leading to a disaster.
I suggest that a local variable is used instead.
Log in to post a comment.