Project

General

Profile

Actions

bug #8066

closed

CdmUserHelper.createAuthorityFor() causes flush of pending transactions

Added by Andreas Kohlbecker over 5 years ago. Updated over 5 years ago.

Status:
Closed
Priority:
Highest
Category:
cdmlib
Target version:
Start date:
Due date:
% Done:

100%

Estimated time:
Severity:
normal
Found in Version:

Description

This was observed when testing for regressions related to #8039, the following steps where done in the registration UI

  1. add "existing name" to registration workingset
  2. add NameTypeDesignation
  3. create new "Typified Name"
  4. Save NameTypeDesignationPopupEditor

during the save operation a PermissionDeniedException occurred:

[reference_int] 12:10:42,124 ERROR [qtp93314457-353][eu.et.va.mv.AbstractPopupEditor] - eu.etaxonomy.cdm.database.PermissionDeniedException: [CREATE] not permitted for 'system-admin' on Registration[uuid:5920ff17-ff73-4930-acb7-3a5d2d906279', toString:'Registration#42<5920ff17-ff73-4930-acb7-3a5d2d906279>']

this was caused by a flush on dirty in the CdmUserHelper.createAuthorityFor() method

Actions #1

Updated by Andreas Kohlbecker over 5 years ago

  • Description updated (diff)

A forced flush before changing the authentication should help in this case. Other options are to

  • do the authority creation in a separate transaction which would involve to use a different transaction isolation level.
  • use a temporary sub-session like in eu.etaxonomy.cdm.persistence.hibernate.GrantedAuthorityRevokingRegistrationUpdateLister.deleteAuthorities()
Actions #2

Updated by Andreas Kohlbecker over 5 years ago

Using the PROPAGATION_REQUIRES_NEW turned out to be in-appropriate. It was causing LazyInitializationExceptions, the same would be the case with temporary sub-sessions. In both cases it would be needed to reload cdm entity into the new session to avoid the LazyInitializationExceptions

Doing an explicit flush seems to be a good solution to the problem.

Actions #3

Updated by Andreas Kohlbecker over 5 years ago

  • Status changed from New to Resolved
  • % Done changed from 0 to 50
Actions #4

Updated by Andreas Kohlbecker over 5 years ago

  • Status changed from Resolved to Closed
  • % Done changed from 50 to 100
Actions

Also available in: Atom PDF