bug #7545
closedIllegalStateException: Multiple representations ... when saving first typeDesignation for name less Registration
100%
Description
Henning reported this error which happened while creating a registration for the existing name Rhopalodia hirudiniformis var. capiticonstricta O.Müll.
Lectotype, pulished image, Reference ausgewählt, Reference detail angegeben.
Caused by: java.lang.RuntimeException: Error saving at eu.etaxonomy.vaadin.mvp.AbstractPopupEditor.save(AbstractPopupEditor.java:396) at eu.etaxonomy.vaadin.mvp.AbstractPopupEditor.lambda$new$fad408e6$1(AbstractPopupEditor.java:158) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510) ... 76 more Caused by: com.vaadin.data.fieldgroup.FieldGroup$CommitException: Commit failed at com.vaadin.data.fieldgroup.FieldGroup.commit(FieldGroup.java:509) at eu.etaxonomy.vaadin.mvp.AbstractPopupEditor.save(AbstractPopupEditor.java:383) ... 82 more Caused by: com.vaadin.data.fieldgroup.FieldGroup$CommitException: Failed to store data to backend at eu.etaxonomy.vaadin.mvp.AbstractPopupEditor$SaveHandler.postCommit(AbstractPopupEditor.java:351) at com.vaadin.data.fieldgroup.FieldGroup.firePostCommitEvent(FieldGroup.java:625) at com.vaadin.data.fieldgroup.FieldGroup.commit(FieldGroup.java:501) ... 83 more Caused by: java.lang.IllegalStateException: Multiple representations of the same entity [eu.etaxonomy.cdm.model.agent.Person#2014] are being merged. Detached: [M?ller, O.]; Detached: [M?ller, O.] at org.hibernate.event.internal.EntityCopyNotAllowedObserver.entityCopyDetected(EntityCopyNotAllowedObserver.java:37) at org.hibernate.event.internal.MergeContext.put(MergeContext.java:245) at org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:304) at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:170) at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:850) at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:832) at org.hibernate.engine.spi.CascadingActions$6.cascade(CascadingActions.java:260) at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:398) at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:323) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:162) at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:111) at org.hibernate.event.internal.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:468) at org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:327) at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:170) at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:850) at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:832) at org.hibernate.engine.spi.CascadingActions$6.cascade(CascadingActions.java:260) at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:398) at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:323) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:162) at org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:431) at org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:363) at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:326) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:162) at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:111) at org.hibernate.event.internal.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:456) at org.hibernate.event.internal.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:239) at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:173) at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:850) at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:832) at org.hibernate.engine.spi.CascadingActions$6.cascade(CascadingActions.java:260) at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:398) at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:323) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:162) at org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:431) at org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:363) at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:326) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:162) at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:111) at org.hibernate.event.internal.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:468) at org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:327) at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:170) at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:69) at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:840) at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:822) at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:827) at eu.etaxonomy.cdm.service.SpecimenTypeDesignationWorkingSetServiceImpl.save(SpecimenTypeDesignationWorkingSetServiceImpl.java:185) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208) at com.sun.proxy.$Proxy866.save(Unknown Source) at eu.etaxonomy.cdm.vaadin.view.name.SpecimenTypeDesignationWorkingsetEditorPresenter.saveBean(SpecimenTypeDesignationWorkingsetEditorPresenter.java:259) at eu.etaxonomy.cdm.vaadin.view.name.SpecimenTypeDesignationWorkingsetEditorPresenter.saveBean(SpecimenTypeDesignationWorkingsetEditorPresenter.java:67) at eu.etaxonomy.vaadin.mvp.AbstractEditorPresenter.onEditorSaveEvent(AbstractEditorPresenter.java:86) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.vaadin.spring.events.internal.MethodListenerWrapper.publish(MethodListenerWrapper.java:78) at org.vaadin.spring.events.internal.ListenerCollection.publish(ListenerCollection.java:167) at org.vaadin.spring.events.internal.ScopedEventBus.publish(ScopedEventBus.java:116) at org.vaadin.spring.events.internal.ScopedEventBus.publish(ScopedEventBus.java:109) at eu.etaxonomy.vaadin.mvp.AbstractPopupEditor$SaveHandler.postCommit(AbstractPopupEditor.java:343) ... 85 more
Files
Updated by Andreas Kohlbecker over 4 years ago
Hallo,
nach dem Fehler, konnte ich keine neuen existierenden Namen auswählen (alter Fehler)
nach aus und einloggen konnte ich zwar neue existierende Namen auswählen, aber
- War die Registrierung 100165, die ja abgebrochen worden war aus der Anzeige, das hätte eigentlich nicht passieren sollen.
- Konnte kein neu ausgewählter Name in die Registrierung, da ein entsprechender Fehler geworfen wurde.
Viele Grüße,
Henning
Updated by Andreas Kohlbecker over 4 years ago
Und wenn man nach diesem Identifier sucht gibt es auch eine Fehlermeldung [#!list/inProgress]:
java.lang.NullPointerException at org.hibernate.engine.internal.NaturalIdXrefDelegate.validateNaturalId(NaturalIdXrefDelegate.java:165) at org.hibernate.engine.internal.NaturalIdXrefDelegate.cacheNaturalIdCrossReference(NaturalIdXrefDelegate.java:72) at org.hibernate.engine.internal.StatefulPersistenceContext$1.cacheNaturalIdCrossReferenceFromLoad(StatefulPersistenceContext.java:1729) at org.hibernate.engine.internal.StatefulPersistenceContext.getNaturalIdSnapshot(StatefulPersistenceContext.java:338) at org.hibernate.event.internal.DefaultFlushEntityEventListener.checkNaturalId(DefaultFlushEntityEventListener.java:90) at org.hibernate.event.internal.DefaultFlushEntityEventListener.getValues(DefaultFlushEntityEventListener.java:180) at org.hibernate.event.internal.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:135) at org.hibernate.event.internal.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:216) at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:85) at org.hibernate.event.internal.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:44) at org.hibernate.internal.SessionImpl.autoFlushIfRequired(SessionImpl.java:1251) at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1767) at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:363) at eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase.list(CdmEntityDaoBase.java:873) at eu.etaxonomy.cdm.api.service.CommonServiceImpl.list(CommonServiceImpl.java:397) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208) at com.sun.proxy.$Proxy593.list(Unknown Source) at eu.etaxonomy.cdm.vaadin.component.CdmBeanItemContainerFactory.buildBeanItemContainer(CdmBeanItemContainerFactory.java:104) at eu.etaxonomy.cdm.vaadin.component.CdmBeanItemContainerFactory.buildBeanItemContainer(CdmBeanItemContainerFactory.java:113) at eu.etaxonomy.cdm.vaadin.view.registration.ListPresenter.handleViewEntered(ListPresenter.java:114) at eu.etaxonomy.vaadin.mvp.AbstractPresenter.onViewEnter(AbstractPresenter.java:157) at eu.etaxonomy.cdm.vaadin.view.registration.ListViewBean.enter(ListViewBean.java:175) at com.vaadin.navigator.Navigator.navigateTo(Navigator.java:625) at com.vaadin.navigator.Navigator.navigateTo(Navigator.java:584) at eu.etaxonomy.vaadin.ui.navigation.NavigationManagerBean.navigateTo(NavigationManagerBean.java:154) at com.vaadin.ui.UI.doInit(UI.java:698) at com.vaadin.server.communication.UIInitHandler.getBrowserDetailsUI(UIInitHandler.java:216) at com.vaadin.server.communication.UIInitHandler.synchronizedHandleRequest(UIInitHandler.java:74) at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41) at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1436) at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:380) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:316) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:122) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:48) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:158) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter(OAuth2AuthenticationProcessingFilter.java:176) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:120) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:91) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:53) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213) at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) at org.eclipse.jetty.server.Server.handle(Server.java:497) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) at java.lang.Thread.run(Thread.java:748)
Updated by Andreas Kohlbecker over 4 years ago
Hallo Henning,
durch den ersten Fehler wurde eine Registrierung erzeugt, die keine TypeDesignation hatte. Das sie für einen existierenden Namen angelegt worden war gab es auch keinen Namen der damit verknüpft ist. Das ist ein ungültiger Zustand für das System und führt daher zu den beobachteten Folgefehlern. Zu solch invaliden Zuständen darf es erst gar nicht kommen, das vorher abgefangen werden, also bevor es zu Problemen kommt - gut dass wir diesen Fall jetzt schon hatten.
Andreas
Updated by Andreas Kohlbecker over 4 years ago
The aftereffects disappeared after restarting the cdm-remote instance. So these secondary problems where most probably due to a hibernate session which was still holding problematic data and which was not closed.
Updated by Andreas Kohlbecker over 4 years ago
I reproduced this issue.
Duplicate cdm entities only exist after pressing the save button for the new typedesignation:
<<< Root Entity Registration with id 9921 >>> Duplicate CDM Entities, - nomenclaturalReference:Reference/519 in entity eu.etaxonomy.cdm.model.name.TaxonName with id : 2506 -- entity belongs to cache(s) : - citation:Reference/519 in entity eu.etaxonomy.cdm.model.common.IdentifiableSource with id : 1872 -- entity belongs to cache(s) : {TC} ----------- ----------- - authorship:Person/2014 in entity eu.etaxonomy.cdm.model.reference.Reference with id : 519 -- entity belongs to cache(s) : - authorship:Person/2014 in entity eu.etaxonomy.cdm.model.reference.Reference with id : 519 -- entity belongs to cache(s) : {TC} ----------- ----------- - combinationAuthorship:Person/2014 in entity eu.etaxonomy.cdm.model.name.TaxonName with id : 2506 -- entity belongs to cache(s) : - authorship:Person/2014 in entity eu.etaxonomy.cdm.model.reference.Reference with id : 519 -- entity belongs to cache(s) : {TC} ----------- - ?createdBy[User#21].citation[Reference#1224].[SpecimenTypeDesignation#0].typeDesignations[java.util.HashSet].[Registration#9921] - ?combinationAuthorship[Person#2014].[TaxonName#2506].typifiedNames[java.util.HashSet].[SpecimenTypeDesignation#0].typeDesignations[java.util.HashSet].[Registration#9921] - ?nomenclaturalReference[Reference#519].[TaxonName#2506].typifiedNames[java.util.HashSet].[SpecimenTypeDesignation#0].typeDesignations[java.util.HashSet].[Registration#9921] - ?inReference[Reference#520].nomenclaturalReference[Reference#519].[TaxonName#2506].typifiedNames[java.util.HashSet].[SpecimenTypeDesignation#0].typeDesignations[java.util.HashSet].[Registration#9921]
Updated by Andreas Kohlbecker over 4 years ago
- Status changed from New to Resolved
- % Done changed from 0 to 50
Applied in changeset cdm-vaadin|af8ec722535f95fcccdc5f4fd4562238987d300a.
Updated by Andreas Kohlbecker over 4 years ago
- Assignee changed from Andreas Kohlbecker to Wolf-Henning Kusber
Updated by Wolf-Henning Kusber over 4 years ago
- Status changed from Resolved to Closed
- Assignee changed from Wolf-Henning Kusber to Andreas Kohlbecker
- % Done changed from 50 to 100
perfekt!