defect
minor
#27403
Synthetic `UpdateChainLink` chain of `KBDataProducerTask` leads nowhere
The tl:KBDataProducerTask creates an artificial UpdateChainLink chain to set its session to the revision being processed. The tl:UpdateChainLink of the latest KnowledgeBase revision has no successor.
If further changes are committed to the tl:KnowledgeBase during processing, an attempt may be made to navigate to the next UpdateChainLink. This results in a NullPointerException:
Stack trace
java.lang.NullPointerException
at com.top_logic.knowledge.service.db2.DBKnowledgeBase.registerForCleanup(DBKnowledgeBase.java:5303)
at com.top_logic.knowledge.service.db2.DBKnowledgeItem.updateWithOlderValues(DBKnowledgeItem.java:774)
at com.top_logic.knowledge.service.db2.DBKnowledgeItem.updateValues(DBKnowledgeItem.java:730)
at com.top_logic.knowledge.service.db2.DBKnowledgeItem.updateDataForRevision(DBKnowledgeItem.java:370)
at com.top_logic.knowledge.service.db2.DBKnowledgeItem.findValues(DBKnowledgeItem.java:329)
at com.top_logic.knowledge.service.db2.DBKnowledgeItem.valuesAlive(DBKnowledgeItem.java:585)
at com.top_logic.knowledge.service.db2.DBKnowledgeBase.syncCacheLookupCache(DBKnowledgeBase.java:1415)
at com.top_logic.knowledge.service.db2.DBKnowledgeBase.cleanupAndLookupCache(DBKnowledgeBase.java:5107)
at com.top_logic.knowledge.service.db2.DBKnowledgeBase.getCachedKey(DBKnowledgeBase.java:5095)
at com.top_logic.knowledge.service.db2.AbstractDBKnowledgeItem.getKnownKey(AbstractDBKnowledgeItem.java:125)
at com.top_logic.knowledge.KnowledgeReferenceStorageImpl.loadObjectKey(KnowledgeReferenceStorageImpl.java:328)
at com.top_logic.knowledge.ByIDReferenceStorageImpl.fetchValue(ByIDReferenceStorageImpl.java:88)
at com.top_logic.dob.attr.storage.AbstractMOAttributeStorageImpl.loadValue(AbstractMOAttributeStorageImpl.java:73)
at com.top_logic.knowledge.service.db2.AbstractDBKnowledgeItem.loadAttributeValues(AbstractDBKnowledgeItem.java:277)
at com.top_logic.knowledge.service.db2.DBKnowledgeItem.refetch(DBKnowledgeItem.java:687)
at com.top_logic.knowledge.service.db2.DBKnowledgeBase.findOrCreateItem(DBKnowledgeBase.java:5238)
at com.top_logic.knowledge.service.db2.DBKnowledgeBase.findOrCreateItem(DBKnowledgeBase.java:5194)
at com.top_logic.knowledge.service.db2.MonomorphicSearch$FullObjectResult.findNext(MonomorphicSearch.java:322)
at com.top_logic.knowledge.service.db2.MonomorphicSearch$FullObjectResult.getAll(MonomorphicSearch.java:301)
at com.top_logic.knowledge.service.db2.MonomorphicSearch.search(MonomorphicSearch.java:73)
at com.top_logic.knowledge.search.AbstractCompiledQuery.search(AbstractCompiledQuery.java:70)
at com.top_logic.knowledge.service.db2.AbstractAssociationQuery.search(AbstractAssociationQuery.java:147)
at com.top_logic.knowledge.service.db2.AssociationCache.query(AssociationCache.java:318)
at com.top_logic.knowledge.service.db2.AssociationCache.getOrCreateGlobalCache(AssociationCache.java:124)
at com.top_logic.knowledge.service.db2.AssociationCache.lookup(AssociationCache.java:67)
at com.top_logic.knowledge.service.db2.AssociationCache.getLinksDirect(AssociationCache.java:53)
at com.top_logic.knowledge.service.db2.DBKnowledgeBase.resolveLinks(DBKnowledgeBase.java:4257)
at com.top_logic.knowledge.service.AssociationQueryUtil.resolveWrappers(AssociationQueryUtil.java:54)
at com.top_logic.knowledge.wrap.AbstractWrapper.resolveWrappersTyped(AbstractWrapper.java:997)
at com.top_logic.knowledge.wrap.AbstractWrapper.resolveWrappersTyped(AbstractWrapper.java:968)
at com.top_logic.contact.business.PersonContact.getPerson(PersonContact.java:147)
[See appendix for the remaining stack frames]
Test
Cannot be reliably reproduced.