bug #8075
Updated by Andreas Kohlbecker about 5 years ago
In the Registration UI there are a couple of ` org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" ... ` errors all related to `eu.etaxonomy.cdm.model.common.DefinedTermBase.representations`: The according tickets groupes by the commonalities: ## TaxonNameStringFilterablePagingProvider #7945 "*TaxonNamePopupEditor: missing genus causes exception when updating name parts visibility*": ~~~ org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: eu.etaxonomy.cdm.model.common.DefinedTermBase.representations at org.hibernate.engine.internal.Collections.processDereferencedCollection(Collections.java:99) ... at org.hibernate.event.internal.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:44) at org.hibernate.internal.SessionImpl.autoFlushIfRequired(SessionImpl.java:1251) ... at com.sun.proxy.$Proxy611.findTaxonNameParts(Unknown Source) at eu.etaxonomy.cdm.service.TaxonNameStringFilterablePagingProvider.size(TaxonNameStringFilterablePagingProvider.java:196) ... at eu.etaxonomy.vaadin.component.WeaklyRelatedEntityCombobox.setValue(WeaklyRelatedEntityCombobox.java:199) at eu.etaxonomy.cdm.vaadin.view.name.TaxonNameEditorPresenter.onFieldReplaceEvent(TaxonNameEditorPresenter.java:379) ... at eu.etaxonomy.vaadin.mvp.AbstractPopupEditor.replaceComponent(AbstractPopupEditor.java:928) at eu.etaxonomy.cdm.vaadin.view.name.TaxonNamePopupEditor.updateFieldVisibility(TaxonNamePopupEditor.java:730) at eu.etaxonomy.cdm.vaadin.view.name.TaxonNamePopupEditor.updateAuthorshipFields(TaxonNamePopupEditor.java:628) at eu.etaxonomy.cdm.vaadin.view.name.TaxonNamePopupEditor.afterItemDataSourceSet(TaxonNamePopupEditor.java:556) at eu.etaxonomy.vaadin.mvp.AbstractPopupEditor.loadInEditor(AbstractPopupEditor.java:812) ~~~ #7881 "*reference selection combobox broken after error in ...*": ~~~ org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: eu.etaxonomy.cdm.model.common.DefinedTermBase.representations at org.hibernate.engine.internal.Collections.processDereferencedCollection(Collections.java:99) ... at org.hibernate.event.internal.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:44) ... at eu.etaxonomy.cdm.persistence.dao.hibernate.common.VersionableDaoBase.countByParam(VersionableDaoBase.java:388) ... at eu.etaxonomy.cdm.service.CdmFilterablePagingProvider.findEntities(CdmFilterablePagingProvider.java:145) at org.vaadin.viritin.fields.LazyComboBox$6.findEntities(LazyComboBox.java:252) at org.vaadin.viritin.LazyList.findEntities(LazyList.java:221) ... at com.vaadin.server.communication.LegacyUidlWriter.write(LegacyUidlWriter.java:82) at com.vaadin.server.communication.UidlWriter.write(UidlWriter.java:143) ~~~ another similar case from the server log without own ticket: ~~~ Caused by: org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: eu.etaxonomy.cdm.model.common.DefinedTermBase.representations at org.hibernate.engine.internal.Collections.processDereferencedCollection(Collections.java:99) ... at org.hibernate.event.internal.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:44) ... at com.sun.proxy.$Proxy611.findTaxonNameParts(Unknown Source) at eu.etaxonomy.cdm.service.TaxonNameStringFilterablePagingProvider.size(TaxonNameStringFilterablePagingProvider.java:196) at org.vaadin.viritin.fields.LazyComboBox$7.size(LazyComboBox.java:261) ~~~ more like this (3 times) 3 times ~~~ [phycobank] 2018-12-07 13:50:02,664 ... Caused by: org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: eu.etaxonomy.cdm.model.common.DefinedTermBase.representations at org.hibernate.engine.internal.Collections.processDereferencedCollection(Collections.java:99) at org.hibernate.event.internal.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:44) ... at eu.etaxonomy.cdm.api.service.NameServiceImpl.findTaxonNameParts(NameServiceImpl.java:375) ... at com.sun.proxy.$Proxy611.findTaxonNameParts(Unknown Source) at eu.etaxonomy.cdm.service.TaxonNameStringFilterablePagingProvider.size(TaxonNameStringFilterablePagingProvider.java:196) ... at org.vaadin.viritin.LazyList.contains(LazyList.java:284) at eu.etaxonomy.vaadin.component.WeaklyRelatedEntityCombobox.setValue(WeaklyRelatedEntityCombobox.java:199) at eu.etaxonomy.cdm.vaadin.view.name.TaxonNameEditorPresenter.onFieldReplaceEvent(TaxonNameEditorPresenter.java:379) ~~~ another one ~~~ Caused by: org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: eu.etaxonomy.cdm.model.common.DefinedTermBase.representations at org.hibernate.engine.internal.Collections.processDereferencedCollection(Collections.java:99) ... at org.hibernate.event.internal.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:44) ... at eu.etaxonomy.cdm.api.service.NameServiceImpl.findTaxonNameParts(NameServiceImpl.java:375) ... at com.sun.proxy.$Proxy611.findTaxonNameParts(Unknown Source) at eu.etaxonomy.cdm.service.TaxonNameStringFilterablePagingProvider.size(TaxonNameStringFilterablePagingProvider.java:196) at org.vaadin.viritin.fields.LazyComboBox$7.size(LazyComboBox.java:261) ... at org.vaadin.viritin.LazyList.contains(LazyList.java:284) at eu.etaxonomy.vaadin.component.WeaklyRelatedEntityCombobox.setValue(WeaklyRelatedEntityCombobox.java:199) ~~~ ## CdmBeanItemContainerFactory #8065 "*HibernateException: corrupt session problem breaks SpecimenTypeDesignationworkingsetEditor type designation table*": ~~~ Caused by: org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: eu.etaxonomy.cdm.model.common.DefinedTermBase.representations at org.hibernate.engine.internal.Collections.processDereferencedCollection(Collections.java:99) ... at org.hibernate.event.internal.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:44) ... at eu.etaxonomy.cdm.api.service.ServiceBase.load(ServiceBase.java:214) ... at com.sun.proxy.$Proxy556.load(Unknown Source) at eu.etaxonomy.cdm.vaadin.component.CdmBeanItemContainerFactory.buildTermItemContainer(CdmBeanItemContainerFactory.java:89) at eu.etaxonomy.cdm.vaadin.view.name.SpecimenTypeDesignationWorkingsetEditorPresenter$1.create(SpecimenTypeDesignationWorkingsetEditorPresenter.java:206) at eu.etaxonomy.cdm.vaadin.view.name.SpecimenTypeDesignationWorkingsetEditorPresenter$1.create(SpecimenTypeDesignationWorkingsetEditorPresenter.java:199) ~~~ 4 time the same issue from the server logs ~~~ Caused by: org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: eu.etaxonomy.cdm.model.common.DefinedTermBase.representations at org.hibernate.engine.internal.Collections.processDereferencedCollection(Collections.java:99) ... at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:86) ... at eu.etaxonomy.cdm.api.service.ServiceBase.load(ServiceBase.java:214) ... at com.sun.proxy.$Proxy558.load(Unknown Source) at eu.etaxonomy.cdm.vaadin.component.CdmBeanItemContainerFactory.buildTermItemContainer(CdmBeanItemContainerFactory.java:89) ~~~ ## ### RegistrationWorkingsetPresenter.saveRegistrationStatusChange(...) ~~~ Caused by: org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: eu.etaxonomy.cdm.model.common.DefinedTermBase.representations at org.hibernate.engine.internal.Collections.processDereferencedCollection(Collections.java:99) at org.hibernate.engine.internal.Collections.processUnreachableCollection(Collections.java:50) at org.hibernate.event.internal.AbstractFlushingEventListener.flushCollections(AbstractFlushingEventListener.java:243) at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:86) at org.hibernate.event.internal.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:44) ... at eu.etaxonomy.cdm.api.service.ServiceBase.load(ServiceBase.java:42) ... at com.sun.proxy.$Proxy694.load(Unknown Source) at eu.etaxonomy.cdm.vaadin.view.registration.RegistrationWorkingsetPresenter.saveRegistrationStatusChange(RegistrationWorkingsetPresenter.java:364) ~~~ ---- The above collection of elated exceptions seems to identify three hotspots where `DefinedTermBase.representations` loaded in another session are leaked into a second session. In two of the cases the forced flush is completely unnecessary since we only need to read data from the db: * CdmBeanItemContainerFactory * TaxonNameStringFilterablePagingProvider The other case of RegistrationWorkingsetPresenter.saveRegistrationStatusChange(...) seems to be different.