Project

General

Profile

Actions

bug #8728

open

Specimen import via BioCASE silently fails

Added by Andreas Kohlbecker over 4 years ago. Updated about 3 years ago.

Status:
New
Priority:
Highest
Assignee:
Category:
taxeditor
Target version:
Start date:
Due date:
% Done:

0%

Estimated time:
Severity:
normal
Found in Version:
Tags:

Description

ABCD Specimen import via BioCASE provider silently fails

Logged in as user with GAs: Editor + TAXONNODE.[CREATE,READ,UPDATE,DELETE]{Vascular plants of Greece : Bupleurum sec. P. Dimopoulos, Th. Raus, E. Bergmeier, Th. Constantinidis, G. Iatrou, S. Kokkini, A. Strid & D. Tzanoudakis, 2013}

biocase accesspoint: http://ww3.bgbm.org/biocase/pywrapper.cgi?dsa=Herbar

Filter parameters:

  • Taxon Name=Bupleurum falcatum*

select all records and import them.

The import stopps at some point with out giving any feedback, afterwards this stacktrace can be found in the log:

!ENTRY org.eclipse.core.jobs 4 0 2019-11-27 16:08:48.259
!MESSAGE This is an unexpected error.
Please contact EDIT Support (EditSupport@bgbm.org) with the error trace below (click on the 'Details' button).
!STACK 0
java.lang.Exception: login :
editor version : 5.11.0
server :  ()
schema version :
os : Linux 5.0.0-36-generic amd64
java : 1.8.0_131
org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:724)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:485)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:291)
        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.$Proxy853.importDataFromStream(Unknown Source)
        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.remoting.support.RemoteInvocationTraceInterceptor.invoke(RemoteInvocationTraceInterceptor.java:78)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)
        at com.sun.proxy.$Proxy1069.importDataFromStream(Unknown Source)
        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.remoting.support.RemoteInvocation.invoke(RemoteInvocation.java:212)
        at org.springframework.remoting.support.DefaultRemoteInvocationExecutor.invoke(DefaultRemoteInvocationExecutor.java:39)
        at org.springframework.remoting.support.RemoteInvocationBasedExporter.invoke(RemoteInvocationBasedExporter.java:78)
        at org.springframework.remoting.support.RemoteInvocationBasedExporter.invokeAndCreateResult(RemoteInvocationBasedExporter.java:114)
        at org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter.handleRequest(HttpInvokerServiceExporter.java:74)
        at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:51)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:871)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)
        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.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:213)
        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.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.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:610)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
        at eu.etaxonomy.taxeditor.Application.start(Application.java:24)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
        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.eclipse.equinox.launcher.Main.invokeFramework(Main.java:673)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:610)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1519)
        at org.eclipse.equinox.launcher.Main.main(Main.java:1492)
Actions #1

Updated by Andreas Kohlbecker over 4 years ago

this is reproducible

once this error has occurred the taxeditor has to be restarted, otherwise further import attempts seem to be blocked

Actions #2

Updated by Andreas Kohlbecker over 4 years ago

  • Description updated (diff)
Actions #3

Updated by Andreas Kohlbecker over 4 years ago

  • Tags set to permission

As the import works without problems with the admin user, it seems as if this is a permission problem.

@Katja: 1. do you know the missing permission (Granted Authorities)?

@Katja: 2. The exceptions regarding the insufficient permission must not be caught completely, it is needed that this error is being propagated to the user in a human friendly form.

Actions #4

Updated by Andreas Kohlbecker over 4 years ago

  • Priority changed from New to Highest
  • Target version changed from Unassigned CDM tickets to Release 5.12

The problem in one specific case was that the user was not permitted to update a person:

[UPDATE] not permitted for 'kurs1' on Person[uuid:43cb913c-f051-46a7-aee3-044428375806', toString:'Person#0<43cb913c-f051-46a7-aee3-044428375806>']
eu.etaxonomy.cdm.database.PermissionDeniedException: [UPDATE] not permitted for 'kurs1' on Person[uuid:43cb913c-f051-46a7-aee3-044428375806', toString:'Person#0<43cb913c-f051-46a7-aee3-044428375806>']

It seems as if this is again a problem which arises from a cache modification during the hibernate save operation.

Recently we had a very similar case, has this one been solved?

Actions #5

Updated by Andreas Kohlbecker over 4 years ago

Next Problem:

[CREATE] not permitted for 'kurs1' on TaxonNode[uuid:79c3deac-ee1d-4622-91fa-746be0894161', toString:'TaxonNode#52<79c3deac-ee1d-4622-91fa-746be0894161>']
eu.etaxonomy.cdm.database.PermissionDeniedException: [CREATE] not permitted for 'kurs1' on TaxonNode[uuid:79c3deac-ee1d-4622-91fa-746be0894161', toString:'TaxonNode#52<79c3deac-ee1d-4622-91fa-746be0894161>']

The import

  1. two options:
    • A: must only allow importing in a new classification, if the user has the general TaxonNode[CREATE] permission
    • B: should grant the require TaxonNode[CRUD] permission for the root node of the new created classification
  2. should only allow selecting classifications as target if the user has ast least one GrantedAuthority for one TaxonNode in this classification

NOTE: copy the tasks resulting from this comment into a new ticket

Actions #6

Updated by Andreas Müller over 4 years ago

Andreas Kohlbecker wrote:

The problem in one specific case was that the user was not permitted to update a person:

[UPDATE] not permitted for 'kurs1' on Person[uuid:43cb913c-f051-46a7-aee3-044428375806', toString:'Person#0<43cb913c-f051-46a7-aee3-044428375806>']
eu.etaxonomy.cdm.database.PermissionDeniedException: [UPDATE] not permitted for 'kurs1' on Person[uuid:43cb913c-f051-46a7-aee3-044428375806', toString:'Person#0<43cb913c-f051-46a7-aee3-044428375806>']

It seems as if this is again a problem which arises from a cache modification during the hibernate save operation.

Recently we had a very similar case, has this one been solved?

The recent problem was a not up-to-date titleCache in E+M after a manual deduplication of persons which lead to not up-to-date titleCaches in the according teams. This has been "solved" by running the titleCache updater.

Actions #7

Updated by Katja Luther over 4 years ago

  • Target version changed from Release 5.12 to Release 5.13
Actions #8

Updated by Andreas Müller about 4 years ago

  • Target version changed from Release 5.13 to Release 5.14
Actions #9

Updated by Katja Luther about 4 years ago

  • Target version changed from Release 5.14 to Release 5.15
Actions #10

Updated by Katja Luther about 4 years ago

  • Target version changed from Release 5.15 to Release 5.18
Actions #11

Updated by Katja Luther over 3 years ago

  • Target version changed from Release 5.18 to Release 5.19
Actions #12

Updated by Andreas Müller about 3 years ago

  • Target version changed from Release 5.19 to Release 5.21
Actions #13

Updated by Andreas Müller about 3 years ago

  • Target version changed from Release 5.21 to Release 5.22
Actions #14

Updated by Katja Luther about 3 years ago

  • Target version changed from Release 5.22 to Release 5.46
Actions

Also available in: Atom PDF