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)