| There are no real steps to reproduce as this is a race condition that is most likely very hard to reproduce but that might have caused integration test failures due to XWiki.XWikiServerClass being reported as missing (just a theory, not confirmed). What is confirmed is that the following could in theory happen in XWikiCacheStore: Thread A calls store.exists(XWiki.XWikiServerClass) → false (not created yet in the database). Thread B runs the mandatory document initializer and saves the class: {{invalidateCache(key)}}removes both the exists and the actual page entry under the write lock. Thread A calls pageExistCache.set(key, FALSE), storing that the page doesn't exist in the cache. The timing looks implausible and can probably only reproduced under a specific load pattern. Still, it's a cache correctness bug that can have the consequence that a freshly created document is reported as non-existing. The lifetime of the cache is infinite, but further invalidation or a full cache can remove the invalid entry again. |