Adam Rempter created RANGER-3162:
------------------------------------

             Summary: Deadlocks when trying to run parallel requests against 
REST api
                 Key: RANGER-3162
                 URL: https://issues.apache.org/jira/browse/RANGER-3162
             Project: Ranger
          Issue Type: Bug
          Components: admin, Ranger
    Affects Versions: 2.1.0
            Reporter: Adam Rempter


We use Ranger 2.1.0 and latest Mariadb (single instance). We did setup MariaDb 
transaction level on DB side to READ COMMITED to ensure that we do not get 
inconsistent reads.

However we sometimes observe database deadlocks when using Ranger REST API with 
parallel requests.

We use API endpoint to delete and post series of five policy Json's:

DELETE [http://localhost:6080/service/public/v2/api/policy] and

POST [http://localhost:6080/service/public/v2/api/policy]

 

Ranger errors:

2021-01-27 11:33:21,481 [http-bio-6080-exec-304] INFO 
org.apache.ranger.common.RESTErrorUtil (RESTErrorUtil.java:312) - Operation 
error. response=VXResponse={org.apache.ranger.view.VXResponse@1810c845statusCode
=\{1} msgDesc={Exception [EclipseLink-4002] (Eclipse Persistence Services - 
2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: 
com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock 
found when trying to get lock; try restarting transaction
Error Code: 1213
Call: INSERT INTO x_policy_ref_resource (ADDED_BY_ID, CREATE_TIME, policy_id, 
resource_def_id, resource_name, UPDATE_TIME, UPD_BY_ID) VALUES (?, ?, ?, ?, ?, 
?, ?)
 bind => [7 parameters bound]
Query: ValueReadQuery(name="x_policy_ref_resource_SEQ" sql="SELECT 
LAST_INSERT_ID()")} messageList=\{null} }
javax.ws.rs.WebApplicationException

 

DB level status for innoDB:

------------------------
LATEST DETECTED DEADLOCK
------------------------
2021-01-27 11:33:21 0x7fe624762700
*** (1) TRANSACTION:
TRANSACTION 24004, ACTIVE 0 sec inserting
mysql tables in use 1, locked 1
LOCK WAIT 17 lock struct(s), heap size 1128, 6 row lock(s), undo log entries 2
MySQL thread id 39, OS thread handle 140626830948096, query id 78458 172.21.0.1 
ranger Update
INSERT INTO x_policy_ref_resource (ADDED_BY_ID, CREATE_TIME, policy_id, 
resource_def_id, resource_name, UPDATE_TIME, UPD_BY_ID) VALUES (1, '2021-01-27 
11:33:21', 417, 73, 'path', '2021-01-27 11:33:21', 1)
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 64 page no 22 n bits 424 index 
x_policy_ref_res_UK_polId_resDefId of table `ranger`.`x_policy_ref_resource` 
trx id 24004 lock_mode X locks gap before rec insert intention waiting
Record lock, heap no 358 PHYSICAL RECORD: n_fields 3; compact format; info bits 0
 0: len 8; hex 80000000000001a3; asc ;;
 1: len 8; hex 8000000000000043; asc C;;
 2: len 8; hex 8000000000000dc4; asc ;;

*** (2) TRANSACTION:
TRANSACTION 24005, ACTIVE 0 sec inserting
mysql tables in use 1, locked 1
17 lock struct(s), heap size 1128, 6 row lock(s), undo log entries 2
MySQL thread id 74, OS thread handle 140626430928640, query id 78478 172.21.0.1 
ranger Update
INSERT INTO x_policy_ref_resource (ADDED_BY_ID, CREATE_TIME, policy_id, 
resource_def_id, resource_name, UPDATE_TIME, UPD_BY_ID) VALUES (1, '2021-01-27 
11:33:21', 418, 53, 'schema', '2021-01-27 11:33:21', 1)
*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 64 page no 22 n bits 424 index 
x_policy_ref_res_UK_polId_resDefId of table `ranger`.`x_policy_ref_resource` 
trx id 24005 lock_mode X locks gap before rec
Record lock, heap no 358 PHYSICAL RECORD: n_fields 3; compact format; info bits 0
 0: len 8; hex 80000000000001a3; asc ;;
 1: len 8; hex 8000000000000043; asc C;;
 2: len 8; hex 8000000000000dc4; asc ;;

*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 64 page no 22 n bits 424 index 
x_policy_ref_res_UK_polId_resDefId of table `ranger`.`x_policy_ref_resource` 
trx id 24005 lock_mode X locks gap before rec insert intention waiting
Record lock, heap no 358 PHYSICAL RECORD: n_fields 3; compact format; info bits 0
 0: len 8; hex 80000000000001a3; asc ;;
 1: len 8; hex 8000000000000043; asc C;;
 2: len 8; hex 8000000000000dc4; asc ;;

 

Please advice it this is something we could tune on Ranger side? Or maybe some 
suggestions from your side how to tune DB connection parameters?

 

Thanks in advance

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to