Actions
Defect #1840
closedDuplicities in processed automatic roles and processed items from LongRunningTask
Status:
Rejected
Priority:
Normal
Assignee:
Radek Tomiška
Category:
Long running task
Target version:
-
Start date:
09/06/2019
Due date:
% Done:
0%
Estimated time:
Affected versions:
Owner:
Description
This defect mostly appears from version 9.3.0 to 9.7.5.
The error from long running task (eq. HrProcess) is throw when is checking older processed items. See the error:
java.lang.IllegalArgumentException: [Assertion failed] - this expression must be true at org.springframework.util.Assert.isTrue(Assert.java:68) at org.springframework.util.Assert.isTrue(Assert.java:80) at eu.bcvsolutions.idm.core.scheduler.api.service.AbstractSchedulableStatefulExecutor.removeFromProcessedQueue(AbstractSchedulableStatefulExecutor.java:110) at eu.bcvsolutions.idm.core.scheduler.api.service.AbstractSchedulableStatefulExecutor.lambda$executeProcess$0(AbstractSchedulableStatefulExecutor.java:189)
The processed items is created in same time:
The second error is thrown by ProcessAllAutomaticRoleByAttributeTaskExecutor. This task is started by daily synchronization. Task will process all automatic roles and remove or assign to users. In some cases can be newly added role assigned twice to same contract. This is problem throw the error:
org.springframework.dao.DataIntegrityViolationException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.DataException: could not extract ResultSet at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:263) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:225) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:436) ... at eu.bcvsolutions.idm.core.model.service.impl.DefaultIdmAutomaticRoleAttributeService.getContractsForAutomaticRole(DefaultIdmAutomaticRoleAttributeService.java:314) at eu.bcvsolutions.idm.core.model.service.impl.DefaultIdmAutomaticRoleAttributeService$$FastClassBySpringCGLIB$$4dda5ce1.invoke(<generated>) ... Caused by: org.postgresql.util.PSQLException: ERROR: more than one row returned by a subquery used as an expression at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2440) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2183)
The fix that can solve this issue can be found in ticket #1822. If you want workaround by sql query:
Query for find duplicates in automatic roles:
select ir.id, ic.id, i.username, ir.created from idm_identity_role ir join idm_identity_contract ic on ic.id = ir.identity_contract_id join idm_identity i on i.id = ic.identity_id where ir.automatic_role_id in ( select irr.automatic_role_id from idm_identity_role irr where irr.automatic_role_id is not null and irr.identity_contract_id = ir.identity_contract_id group by irr.automatic_role_id having count(*) > 1 );
Sql query for duplicates in processed items:
select referenced_entity_id, scheduled_task_queue_owner, count(*) from idm_processed_task_item where scheduled_task_queue_owner is not null group by referenced_entity_id, scheduled_task_queue_owner having count(*) > 1;
Files
Related issues
Updated by Radek Tomiška almost 5 years ago
- Related to Defect #1822: HrEndContractProcess and HrEnableContractProcess process wrong items (some duplicate, some too late) added
Updated by Radek Tomiška almost 5 years ago
- Related to Defect #1961: Occasional duplicated automatic role assignment added
Updated by Radek Tomiška almost 5 years ago
- Related to Task #1968: Prevent to try assign duplicated automatic roles added
Updated by Radek Tomiška almost 5 years ago
- Status changed from New to Rejected
- Assignee changed from Ondřej Kopr to Radek Tomiška
Actions