[
https://issues.apache.org/jira/browse/SENTRY-1740?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15997800#comment-15997800
]
Alexander Kolbasov commented on SENTRY-1740:
--------------------------------------------
This isn't related to SENTRY-1743 - I tried with SENTRY-1743 fixed an the
result is the same. Here is a log from another run:
{code}
SELECT 'org.apache.sentry.provider.db.service.model.MSentryGMPrivilege' AS
NUCLEUS_TYPE,A1."ACTION",A1.COMPONENT_NAME,A1.CREATE_TIME,A1.WITH_GRANT_OPTION,A1.
RESOURCE_NAME_0,A1.RESOURCE_NAME_1,A1.RESOURCE_NAME_2,A1.RESOURCE_NAME_3,A1.RESOURCE_TYPE_0,A1.RESOURCE_TYPE_1,A1.RESOURCE_TYPE_2,A1.RESOURCE_TYPE_3,A1."SCOPE",A1.SERVICE_NAME,A1.GM_PRIVILEGE_I
D,A0.ROLE_ID FROM SENTRY_ROLE_GM_PRIVILEGE_MAP A0 INNER JOIN
SENTRY_GM_PRIVILEGE A1 ON A0.GM_PRIVILEGE_ID = A1.GM_PRIVILEGE_ID WHERE EXISTS
(SELECT 'org.apache.sentry.provider.db.service.model.
MSentryRole' AS NUCLEUS_TYPE,A0_SUB.ROLE_ID AS DN_DATASTOREID FROM SENTRY_ROLE
A0_SUB WHERE A0.ROLE_ID = A0_SUB.ROLE_ID)
javax.jdo.JDODataStoreException: Iteration request failed : SELECT
'org.apache.sentry.provider.db.service.model.MSentryGMPrivilege' AS
NUCLEUS_TYPE,A1."ACTION",A1.COMPONENT_NAME,A1.CREATE_TIME,
A1.WITH_GRANT_OPTION,A1.RESOURCE_NAME_0,A1.RESOURCE_NAME_1,A1.RESOURCE_NAME_2,A1.RESOURCE_NAME_3,A1.RESOURCE_TYPE_0,A1.RESOURCE_TYPE_1,A1.RESOURCE_TYPE_2,A1.RESOURCE_TYPE_3,A1."SCOPE",A1.SERVIC
E_NAME,A1.GM_PRIVILEGE_ID,A0.ROLE_ID FROM SENTRY_ROLE_GM_PRIVILEGE_MAP A0 INNER
JOIN SENTRY_GM_PRIVILEGE A1 ON A0.GM_PRIVILEGE_ID = A1.GM_PRIVILEGE_ID WHERE
EXISTS (SELECT 'org.apache.sentry.pr
ovider.db.service.model.MSentryRole' AS NUCLEUS_TYPE,A0_SUB.ROLE_ID AS
DN_DATASTOREID FROM SENTRY_ROLE A0_SUB WHERE A0.ROLE_ID = A0_SUB.ROLE_ID)
at
org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:451)
at org.datanucleus.api.jdo.JDOQuery.execute(JDOQuery.java:230)
at
org.apache.sentry.provider.db.service.persistent.SentryStore.getAllRoles(SentryStore.java:296)
at
org.apache.sentry.provider.db.service.persistent.SentryStore.access$1200(SentryStore.java:88)
at
org.apache.sentry.provider.db.service.persistent.SentryStore$21.execute(SentryStore.java:1270)
at
org.apache.sentry.provider.db.service.persistent.SentryStore$21.execute(SentryStore.java:1264)
at
org.apache.sentry.provider.db.service.persistent.TransactionManager.executeTransaction(TransactionManager.java:111)
at
org.apache.sentry.provider.db.service.persistent.SentryStore.getMSentryRolesByGroupName(SentryStore.java:1263)
at
org.apache.sentry.provider.db.service.persistent.SentryStore.getTSentryRolesByGroupName(SentryStore.java:1299)
at
org.apache.sentry.provider.db.generic.service.persistent.DelegateSentryStore.getRolesByGroups(DelegateSentryStore.java:244)
at
org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessor$9.handle(SentryGenericPolicyProcessor.java:605)
at
org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessor.requestHandle(SentryGenericPolicyProcessor.java:197)
at
org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessor.list_sentry_roles_by_group(SentryGenericPolicyProcessor.java:589)
at
org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyService$Processor$list_sentry_roles_by_group.getResult(SentryGenericPolicyService.java:957)
at
org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyService$Processor$list_sentry_roles_by_group.getResult(SentryGenericPolicyService.java:942)
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
at
org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessorWrapper.process(SentryGenericPolicyProcessorWrapper.java:37)
at
org.apache.thrift.TMultiplexedProcessor.process(TMultiplexedProcessor.java:123)
at
org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
NestedThrowablesStackTrace:
java.sql.SQLTransactionRollbackException: A lock could not be obtained due to a
deadlock, cycle of locks and waiters is:
Lock : ROW, SENTRY_ROLE_GM_PRIVILEGE_MAP, (1,7)
Waiting XID : {4133, X} , SENTRY, DELETE FROM SENTRY_ROLE WHERE ROLE_ID=?
Granted XID : {4133, S} , {4143, S} , {4144, S}
. The selected victim is XID : 4144.
at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown
Source)
at
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown
Source)
at
org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown
Source)
at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown
Source)
at
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown
Source)
at
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeQuery(Unknown Source)
at
org.datanucleus.store.rdbms.datasource.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
at
org.datanucleus.store.rdbms.datasource.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
at
org.datanucleus.store.rdbms.ParamLoggingPreparedStatement.executeQuery(ParamLoggingPreparedStatement.java:381)
at
org.datanucleus.store.rdbms.SQLController.executeStatementQuery(SQLController.java:559)
at
org.datanucleus.store.rdbms.query.JDOQLQuery.performExecute(JDOQLQuery.java:724)
at org.datanucleus.store.query.Query.executeQuery(Query.java:1786)
at org.datanucleus.store.query.Query.executeWithArray(Query.java:1672)
at org.datanucleus.store.query.Query.execute(Query.java:1654)
at org.datanucleus.api.jdo.JDOQuery.execute(JDOQuery.java:221)
at
org.apache.sentry.provider.db.service.persistent.SentryStore.getAllRoles(SentryStore.java:296)
at
org.apache.sentry.provider.db.service.persistent.SentryStore.access$1200(SentryStore.java:88)
at
org.apache.sentry.provider.db.service.persistent.SentryStore$21.execute(SentryStore.java:1270)
at
org.apache.sentry.provider.db.service.persistent.SentryStore$21.execute(SentryStore.java:1264)
at
org.apache.sentry.provider.db.service.persistent.TransactionManager.executeTransaction(TransactionManager.java:111)
at
org.apache.sentry.provider.db.service.persistent.SentryStore.getMSentryRolesByGroupName(SentryStore.java:1263)
at
org.apache.sentry.provider.db.service.persistent.SentryStore.getTSentryRolesByGroupName(SentryStore.java:1299)
at
org.apache.sentry.provider.db.generic.service.persistent.DelegateSentryStore.getRolesByGroups(DelegateSentryStore.java:244)
at
org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessor$9.handle(SentryGenericPolicyProcessor.java:605)
at
org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessor.requestHandle(SentryGenericPolicyProcessor.java:197)
at
org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessor.list_sentry_roles_by_group(SentryGenericPolicyProcessor.java:589)
at
org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyService$Processor$list_sentry_roles_by_group.getResult(SentryGenericPolicyService.java:957)
at
org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyService$Processor$list_sentry_roles_by_group.getResult(SentryGenericPolicyService.java:942)
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
at
org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessorWrapper.process(SentryGenericPolicyProcessorWrapper.java:37)
at
org.apache.thrift.TMultiplexedProcessor.process(TMultiplexedProcessor.java:123)
at
org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.sql.SQLException: A lock could not be obtained due to a
deadlock, cycle of locks and waiters is:
Lock : ROW, SENTRY_ROLE_GM_PRIVILEGE_MAP, (1,7)
Waiting XID : {4144, S} , SENTRY, SELECT
'org.apache.sentry.provider.db.service.model.MSentryGMPrivilege' AS
NUCLEUS_TYPE,A1."ACTION",A1.COMPONENT_NAME,A1.CREATE_TIME,A1.WITH_GRANT_OPTION,A1.RESOURCE_NAME_0,A1.RESOURCE_NAME_1,A1.RESOURCE_NAME_2,A1.RESOURCE_NAME_3,A1.RESOURCE_TYPE_0,A1.RESOURCE_TYPE_1,A1.RESOURCE_TYPE_2,A1.RESOURCE_TYPE_3,A1."SCOPE",A1.SERVICE_NAME,A1.GM_PRIVILEGE_ID,A0.ROLE_ID
FROM SENTRY_ROLE_GM_PRIVILEGE_MAP A0 INNER JOIN SENTRY_GM_PRIVILEGE A1 ON
A0.GM_PRIVILEGE_ID = A1.GM_PRIVILEGE_ID WHERE EXISTS (SELECT
'org.apache.sentry.provider.db.service.model.MSentryRole' AS
NUCLEUS_TYPE,A0_SUB.ROLE_ID AS DN_DATASTOREID FROM SENTRY_ROLE A0_SUB WHERE
A0.ROLE_ID = A0_SUB.ROLE_ID)
Granted XID : {4133, S}
Lock : ROW, SENTRY_ROLE, (1,7)
Waiting XID : {4133, X} , SENTRY, DELETE FROM SENTRY_ROLE WHERE ROLE_ID=?
Granted XID : {4133, S} , {4143, S} , {4144, S}
. The selected victim is XID : 4144.
at
org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
Source)
... 39 more
Caused by: ERROR 40001: A lock could not be obtained due to a deadlock, cycle
of locks and waiters is:
Lock : ROW, SENTRY_ROLE_GM_PRIVILEGE_MAP, (1,7)
Waiting XID : {4144, S} , SENTRY, SELECT
'org.apache.sentry.provider.db.service.model.MSentryGMPrivilege' AS
NUCLEUS_TYPE,A1."ACTION",A1.COMPONENT_NAME,A1.CREATE_TIME,A1.WITH_GRANT_OPTION,A1.RESOURCE_NAME_0,A1.RESOURCE_NAME_1,A1.RESOURCE_NAME_2,A1.RESOURCE_NAME_3,A1.RESOURCE_TYPE_0,A1.RESOURCE_TYPE_1,A1.RESOURCE_TYPE_2,A1.RESOURCE_TYPE_3,A1."SCOPE",A1.SERVICE_NAME,A1.GM_PRIVILEGE_ID,A0.ROLE_ID
FROM SENTRY_ROLE_GM_PRIVILEGE_MAP A0 INNER JOIN SENTRY_GM_PRIVILEGE A1 ON
A0.GM_PRIVILEGE_ID = A1.GM_PRIVILEGE_ID WHERE EXISTS (SELECT
'org.apache.sentry.provider.db.service.model.MSentryRole' AS
NUCLEUS_TYPE,A0_SUB.ROLE_ID AS DN_DATASTOREID FROM SENTRY_ROLE A0_SUB WHERE
A0.ROLE_ID = A0_SUB.ROLE_ID)
Granted XID : {4133, S}
Lock : ROW, SENTRY_ROLE, (1,7)
Waiting XID : {4133, X} , SENTRY, DELETE FROM SENTRY_ROLE WHERE ROLE_ID=?
Granted XID : {4133, S} , {4143, S} , {4144, S}
. The selected victim is XID : 4144.
at org.apache.derby.iapi.error.StandardException.newException(Unknown
Source)
at org.apache.derby.impl.services.locks.Deadlock.buildException(Unknown
Source)
at
org.apache.derby.impl.services.locks.ConcurrentLockSet.lockObject(Unknown
Source)
at org.apache.derby.impl.services.locks.AbstractPool.lockObject(Unknown
Source)
at
org.apache.derby.impl.services.locks.ConcurrentPool.lockObject(Unknown Source)
at
org.apache.derby.impl.store.raw.xact.RowLocking3.lockRecordForRead(Unknown
Source)
at
org.apache.derby.impl.store.access.heap.HeapController.lockRow(Unknown Source)
at
org.apache.derby.impl.store.access.heap.HeapController.lockRow(Unknown Source)
at
org.apache.derby.impl.store.access.btree.index.B2IRowLocking3.lockRowOnPage(Unknown
Source)
at
org.apache.derby.impl.store.access.btree.index.B2IRowLocking3._lockScanRow(Unknown
Source)
at
org.apache.derby.impl.store.access.btree.index.B2IRowLockingRR.lockScanRow(Unknown
Source)
at
org.apache.derby.impl.store.access.btree.BTreeForwardScan.fetchRows(Unknown
Source)
at org.apache.derby.impl.store.access.btree.BTreeScan.fetchSet(Unknown
Source)
at
org.apache.derby.impl.store.access.BackingStoreHashTableFromScan.<init>(Unknown
Source)
at
org.apache.derby.impl.store.access.RAMTransaction.createBackingStoreHashtableFromScan(Unknown
Source)
at org.apache.derby.impl.sql.execute.HashScanResultSet.openCore(Unknown
Source)
at org.apache.derby.impl.sql.execute.JoinResultSet.openRight(Unknown
Source)
at org.apache.derby.impl.sql.execute.JoinResultSet.openCore(Unknown
Source)
at org.apache.derby.impl.sql.execute.JoinResultSet.openCore(Unknown
Source)
at
org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(Unknown
Source)
at
org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.open(Unknown Source)
at
org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown Source)
at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown
Source)
... 33 more
2017-05-04 21:41:11,961 (pool-2-thread-15) [ERROR -
org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessor.requestHandle(SentryGenericPolicyProcessor.java:220)]
Unknown error:Iteration request failed : SELECT
'org.apache.sentry.provider.db.service.model.MSentryGMPrivilege' AS
NUCLEUS_TYPE,A1."ACTION",A1.COMPONENT_NAME,A1.CREATE_TIME,A1.WITH_GRANT_OPTION,A1.RESOURCE_NAME_0,A1.RESOURCE_NAME_1,A1.RESOURCE_NAME_2,A1.RESOURCE_NAME_3,A1.RESOURCE_TYPE_0,A1.RESOURCE_TYPE_1,A1.RESOURCE_TYPE_2,A1.RESOURCE_TYPE_3,A1."SCOPE",A1.SERVICE_NAME,A1.GM_PRIVILEGE_ID,A0.ROLE_ID
FROM SENTRY_ROLE_GM_PRIVILEGE_MAP A0 INNER JOIN SENTRY_GM_PRIVILEGE A1 ON
A0.GM_PRIVILEGE_ID = A1.GM_PRIVILEGE_ID WHERE EXISTS (SELECT
'org.apache.sentry.provider.db.service.model.MSentryRole' AS
NUCLEUS_TYPE,A0_SUB.ROLE_ID AS DN_DATASTOREID FROM SENTRY_ROLE A0_SUB WHERE
A0.ROLE_ID = A0_SUB.ROLE_ID)
javax.jdo.JDODataStoreException: Iteration request failed : SELECT
'org.apache.sentry.provider.db.service.model.MSentryGMPrivilege' AS
NUCLEUS_TYPE,A1."ACTION",A1.COMPONENT_NAME,A1.CREATE_TIME,A1.WITH_GRANT_OPTION,A1.RESOURCE_NAME_0,A1.RESOURCE_NAME_1,A1.RESOURCE_NAME_2,A1.RESOURCE_NAME_3,A1.RESOURCE_TYPE_0,A1.RESOURCE_TYPE_1,A1.RESOURCE_TYPE_2,A1.RESOURCE_TYPE_3,A1."SCOPE",A1.SERVICE_NAME,A1.GM_PRIVILEGE_ID,A0.ROLE_ID
FROM SENTRY_ROLE_GM_PRIVILEGE_MAP A0 INNER JOIN SENTRY_GM_PRIVILEGE A1 ON
A0.GM_PRIVILEGE_ID = A1.GM_PRIVILEGE_ID WHERE EXISTS (SELECT
'org.apache.sentry.provider.db.service.model.MSentryRole' AS
NUCLEUS_TYPE,A0_SUB.ROLE_ID AS DN_DATASTOREID FROM SENTRY_ROLE A0_SUB WHERE
A0.ROLE_ID = A0_SUB.ROLE_ID)
at
org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:451)
at org.datanucleus.api.jdo.JDOQuery.execute(JDOQuery.java:230)
at
org.apache.sentry.provider.db.service.persistent.SentryStore.getAllRoles(SentryStore.java:296)
at
org.apache.sentry.provider.db.service.persistent.SentryStore.access$1200(SentryStore.java:88)
at
org.apache.sentry.provider.db.service.persistent.SentryStore$21.execute(SentryStore.java:1270)
at
org.apache.sentry.provider.db.service.persistent.SentryStore$21.execute(SentryStore.java:1264)
at
org.apache.sentry.provider.db.service.persistent.TransactionManager.executeTransaction(TransactionManager.java:111)
at
org.apache.sentry.provider.db.service.persistent.SentryStore.getMSentryRolesByGroupName(SentryStore.java:1263)
at
org.apache.sentry.provider.db.service.persistent.SentryStore.getTSentryRolesByGroupName(SentryStore.java:1299)
at
org.apache.sentry.provider.db.generic.service.persistent.DelegateSentryStore.getRolesByGroups(DelegateSentryStore.java:244)
at
org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessor$9.handle(SentryGenericPolicyProcessor.java:605)
at
org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessor.requestHandle(SentryGenericPolicyProcessor.java:197)
at
org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessor.list_sentry_roles_by_group(SentryGenericPolicyProcessor.java:589)
at
org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyService$Processor$list_sentry_roles_by_group.getResult(SentryGenericPolicyService.java:957)
at
org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyService$Processor$list_sentry_roles_by_group.getResult(SentryGenericPolicyService.java:942)
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
at
org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessorWrapper.process(SentryGenericPolicyProcessorWrapper.java:37)
at
org.apache.thrift.TMultiplexedProcessor.process(TMultiplexedProcessor.java:123)
at
org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
NestedThrowablesStackTrace:
java.sql.SQLTransactionRollbackException: A lock could not be obtained due to a
deadlock, cycle of locks and waiters is:
Lock : ROW, SENTRY_ROLE_GM_PRIVILEGE_MAP, (1,7)
Waiting XID : {4143, S} , SENTRY, SELECT
'org.apache.sentry.provider.db.service.model.MSentryGMPrivilege' AS
NUCLEUS_TYPE,A1."ACTION",A1.COMPONENT_NAME,A1.CREATE_TIME,A1.WITH_GRANT_OPTION,A1.RESOURCE_NAME_0,A1.RESOURCE_NAME_1,A1.RESOURCE_NAME_2,A1.RESOURCE_NAME_3,A1.RESOURCE_TYPE_0,A1.RESOURCE_TYPE_1,A1.RESOURCE_TYPE_2,A1.RESOURCE_TYPE_3,A1."SCOPE",A1.SERVICE_NAME,A1.GM_PRIVILEGE_ID,A0.ROLE_ID
FROM SENTRY_ROLE_GM_PRIVILEGE_MAP A0 INNER JOIN SENTRY_GM_PRIVILEGE A1 ON
A0.GM_PRIVILEGE_ID = A1.GM_PRIVILEGE_ID WHERE EXISTS (SELECT
'org.apache.sentry.provider.db.service.model.MSentryRole' AS
NUCLEUS_TYPE,A0_SUB.ROLE_ID AS DN_DATASTOREID FROM SENTRY_ROLE A0_SUB WHERE
A0.ROLE_ID = A0_SUB.ROLE_ID)
Granted XID : {4133, S}
Lock : ROW, SENTRY_ROLE, (1,7)
Waiting XID : {4133, X} , SENTRY, DELETE FROM SENTRY_ROLE WHERE ROLE_ID=?
Granted XID : {4133, S} , {4143, S}
. The selected victim is XID : 4143.
at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown
Source)
at
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown
Source)
at
org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown
Source)
at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown
Source)
at
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown
Source)
at
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeQuery(Unknown Source)
at
org.datanucleus.store.rdbms.datasource.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
at
org.datanucleus.store.rdbms.datasource.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
at
org.datanucleus.store.rdbms.ParamLoggingPreparedStatement.executeQuery(ParamLoggingPreparedStatement.java:381)
at
org.datanucleus.store.rdbms.SQLController.executeStatementQuery(SQLController.java:559)
at
org.datanucleus.store.rdbms.query.JDOQLQuery.performExecute(JDOQLQuery.java:724)
at org.datanucleus.store.query.Query.executeQuery(Query.java:1786)
at org.datanucleus.store.query.Query.executeWithArray(Query.java:1672)
at org.datanucleus.store.query.Query.execute(Query.java:1654)
at org.datanucleus.api.jdo.JDOQuery.execute(JDOQuery.java:221)
at
org.apache.sentry.provider.db.service.persistent.SentryStore.getAllRoles(SentryStore.java:296)
at
org.apache.sentry.provider.db.service.persistent.SentryStore.access$1200(SentryStore.java:88)
at
org.apache.sentry.provider.db.service.persistent.SentryStore$21.execute(SentryStore.java:1270)
at
org.apache.sentry.provider.db.service.persistent.SentryStore$21.execute(SentryStore.java:1264)
at
org.apache.sentry.provider.db.service.persistent.TransactionManager.executeTransaction(TransactionManager.java:111)
at
org.apache.sentry.provider.db.service.persistent.SentryStore.getMSentryRolesByGroupName(SentryStore.java:1263)
at
org.apache.sentry.provider.db.service.persistent.SentryStore.getTSentryRolesByGroupName(SentryStore.java:1299)
at
org.apache.sentry.provider.db.generic.service.persistent.DelegateSentryStore.getRolesByGroups(DelegateSentryStore.java:244)
...
Caused by: java.sql.SQLException: A lock could not be obtained due to a
deadlock, cycle of locks and waiters is:
Lock : ROW, SENTRY_ROLE_GM_PRIVILEGE_MAP, (1,7)
Waiting XID : {4143, S} , SENTRY, SELECT
'org.apache.sentry.provider.db.service.model.MSentryGMPrivilege' AS
NUCLEUS_TYPE,A1."ACTION",A1.COMPONENT_NAME,A1.CREATE_TIME,A1.WITH_GRANT_OPTION,A1.RESOURCE_NAME_0,A1.RESOURCE_NAME_1,A1.RESOURCE_NAME_2,A1.RESOURCE_NAME_3,A1.RESOURCE_TYPE_0,A1.RESOURCE_TYPE_1,A1.RESOURCE_TYPE_2,A1.RESOURCE_TYPE_3,A1."SCOPE",A1.SERVICE_NAME,A1.GM_PRIVILEGE_ID,A0.ROLE_ID
FROM SENTRY_ROLE_GM_PRIVILEGE_MAP A0 INNER JOIN SENTRY_GM_PRIVILEGE A1 ON
A0.GM_PRIVILEGE_ID = A1.GM_PRIVILEGE_ID WHERE EXISTS (SELECT
'org.apache.sentry.provider.db.service.model.MSentryRole' AS
NUCLEUS_TYPE,A0_SUB.ROLE_ID AS DN_DATASTOREID FROM SENTRY_ROLE A0_SUB WHERE
A0.ROLE_ID = A0_SUB.ROLE_ID)
Granted XID : {4133, S}
Lock : ROW, SENTRY_ROLE, (1,7)
Waiting XID : {4133, X} , SENTRY, DELETE FROM SENTRY_ROLE WHERE ROLE_ID=?
Granted XID : {4133, S} , {4143, S}
. The selected victim is XID : 4143.
at
org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
Source)
... 39 more
Caused by: ERROR 40001: A lock could not be obtained due to a deadlock, cycle
of locks and waiters is:
Lock : ROW, SENTRY_ROLE_GM_PRIVILEGE_MAP, (1,7)
Waiting XID : {4143, S} , SENTRY, SELECT
'org.apache.sentry.provider.db.service.model.MSentryGMPrivilege' AS
NUCLEUS_TYPE,A1."ACTION",A1.COMPONENT_NAME,A1.CREATE_TIME,A1.WITH_GRANT_OPTION,A1.RESOURCE_NAME_0,A1.RESOURCE_NAME_1,A1.RESOURCE_NAME_2,A1.RESOURCE_NAME_3,A1.RESOURCE_TYPE_0,A1.RESOURCE_TYPE_1,A1.RESOURCE_TYPE_2,A1.RESOURCE_TYPE_3,A1."SCOPE",A1.SERVICE_NAME,A1.GM_PRIVILEGE_ID,A0.ROLE_ID
FROM SENTRY_ROLE_GM_PRIVILEGE_MAP A0 INNER JOIN SENTRY_GM_PRIVILEGE A1 ON
A0.GM_PRIVILEGE_ID = A1.GM_PRIVILEGE_ID WHERE EXISTS (SELECT
'org.apache.sentry.provider.db.service.model.MSentryRole' AS
NUCLEUS_TYPE,A0_SUB.ROLE_ID AS DN_DATASTOREID FROM SENTRY_ROLE A0_SUB WHERE
A0.ROLE_ID = A0_SUB.ROLE_ID)
Granted XID : {4133, S}
Lock : ROW, SENTRY_ROLE, (1,7)
Waiting XID : {4133, X} , SENTRY, DELETE FROM SENTRY_ROLE WHERE ROLE_ID=?
Granted XID : {4133, S} , {4143, S}
. The selected victim is XID : 4143.
{code}
> Deadlock when handling GM privileges
> ------------------------------------
>
> Key: SENTRY-1740
> URL: https://issues.apache.org/jira/browse/SENTRY-1740
> Project: Sentry
> Issue Type: Sub-task
> Components: Sentry
> Affects Versions: 1.8.0, sentry-ha-redesign
> Reporter: Alexander Kolbasov
> Assignee: Sergio Peña
>
> While running Kafka TestAclsCrud e2e test I noticed a bunch of failures in
> the log:
> {code}
> 2017-04-30 14:30:45,684 (Timer-1) [ERROR -
> org.apache.sentry.provider.db.generic.UpdatableCache.revokeAllPrivilegesIfRequired(UpdatableCache.java:157)]
> Failed to update roles and privileges cache for 40123 times. Revoking all
> privileges from cache, which will cause all authorization requests to fail.
> 2017-04-30 14:30:45,685 (pool-19-thread-14) [ERROR -
> org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessor.requestHandle(SentryGenericPolicyProcessor.java:221)]
> Unknown error:Iteration request failed : SELECT
> 'org.apache.sentry.provider.db.service.model.MSentryGMPrivilege' AS
> NUCLEUS_TYPE,A1."ACTION",A1.COMPONENT_NAME,A1.CREATE_TIME,A1.WITH_GRANT_OPTION,A1.RESOURCE_NAME_0,A1.RESOURCE_NAME_1,A1.RESOURCE_NAME_2,A1.RESOURCE_NAME_3,A1.RESOURCE_TYPE_0,A1.RESOURCE_TYPE_1,A1.RESOURCE_TYPE_2,A1.RESOURCE_TYPE_3,A1."SCOPE",A1.SERVICE_NAME,A1.GM_PRIVILEGE_ID,A0.ROLE_ID
> FROM SENTRY_ROLE_GM_PRIVILEGE_MAP A0 INNER JOIN SENTRY_GM_PRIVILEGE A1 ON
> A0.GM_PRIVILEGE_ID = A1.GM_PRIVILEGE_ID WHERE EXISTS (SELECT
> 'org.apache.sentry.provider.db.service.model.MSentryRole' AS
> NUCLEUS_TYPE,A0_SUB.ROLE_ID AS DN_DATASTOREID FROM SENTRY_ROLE A0_SUB WHERE
> A0.ROLE_ID = A0_SUB.ROLE_ID)
> javax.jdo.JDODataStoreException: Iteration request failed : SELECT
> 'org.apache.sentry.provider.db.service.model.MSentryGMPrivilege' AS
> NUCLEUS_TYPE,A1."ACTION",A1.COMPONENT_NAME,A1.CREATE_TIME,A1.WITH_GRANT_OPTION,A1.RESOURCE_NAME_0,A1.RESOURCE_NAME_1,A1.RESOURCE_NAME_2,A1.RESOURCE_NAME_3,A1.RESOURCE_TYPE_0,A1.RESOURCE_TYPE_1,A1.RESOURCE_TYPE_2,A1.RESOURCE_TYPE_3,A1."SCOPE",A1.SERVICE_NAME,A1.GM_PRIVILEGE_ID,A0.ROLE_ID
> FROM SENTRY_ROLE_GM_PRIVILEGE_MAP A0 INNER JOIN SENTRY_GM_PRIVILEGE A1 ON
> A0.GM_PRIVILEGE_ID = A1.GM_PRIVILEGE_ID WHERE EXISTS (SELECT
> 'org.apache.sentry.provider.db.service.model.MSentryRole' AS
> NUCLEUS_TYPE,A0_SUB.ROLE_ID AS DN_DATASTOREID FROM SENTRY_ROLE A0_SUB WHERE
> A0.ROLE_ID = A0_SUB.ROLE_ID)
> at
> org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:451)
> at org.datanucleus.api.jdo.JDOQuery.execute(JDOQuery.java:230)
> at
> org.apache.sentry.provider.db.service.persistent.SentryStore.getAllRoles(SentryStore.java:303)
> at
> org.apache.sentry.provider.db.service.persistent.SentryStore.access$1400(SentryStore.java:101)
> at
> org.apache.sentry.provider.db.service.persistent.SentryStore$29.execute(SentryStore.java:1610)
> at
> org.apache.sentry.provider.db.service.persistent.SentryStore$29.execute(SentryStore.java:1604)
> at
> org.apache.sentry.provider.db.service.persistent.TransactionManager.executeTransaction(TransactionManager.java:114)
> at
> org.apache.sentry.provider.db.service.persistent.SentryStore.getMSentryRolesByGroupName(SentryStore.java:1603)
> at
> org.apache.sentry.provider.db.service.persistent.SentryStore.getTSentryRolesByGroupName(SentryStore.java:1639)
> at
> org.apache.sentry.provider.db.generic.service.persistent.DelegateSentryStore.getRolesByGroups(DelegateSentryStore.java:240)
> ...
> {code}
> {code}
> java.sql.SQLTransactionRollbackException: A lock could not be obtained due to
> a deadlock, cycle of locks and waiters is:
> Lock : ROW, SENTRY_ROLE_GM_PRIVILEGE_MAP, (1,7)
> Waiting XID : {585, S} , SENTRY, SELECT
> 'org.apache.sentry.provider.db.service.model.MSentryGMPrivilege' AS
> NUCLEUS_TYPE,A1."ACTION",A1.COMPONENT_NAME,A1.CREATE_TIME,A1.WITH_GRANT_OPTION,A1.RESOURCE_NAME_0,A1.RESOURCE_NAME_1,A1.RESOURCE_NAME_2,A1.RESOURCE_NAME_3,A1.RESOURCE_TYPE_0,A1.RESOURCE_TYPE_1,A1.RESOURCE_TYPE_2,A1.RESOURCE_TYPE_3,A1."SCOPE",A1.SERVICE_NAME,A1.GM_PRIVILEGE_ID,A0.ROLE_ID
> FROM SENTRY_ROLE_GM_PRIVILEGE_MAP A0 INNER JOIN SENTRY_GM_PRIVILEGE A1 ON
> A0.GM_PRIVILEGE_ID = A1.GM_PRIVILEGE_ID WHERE EXISTS (SELECT
> 'org.apache.sentry.provider.db.service.model.MSentryRole' AS
> NUCLEUS_TYPE,A0_SUB.ROLE_ID AS DN_DATASTOREID FROM SENTRY_ROLE A0_SUB WHERE
> A0.ROLE_ID = A0_SUB.ROLE_ID)
> Granted XID : {575, S}
> Lock : ROW, SENTRY_ROLE, (1,7)
> Waiting XID : {575, X} , SENTRY, DELETE FROM SENTRY_ROLE WHERE ROLE_ID=?
> Granted XID : {575, S} , {583, S} , {585, S}
> . The selected victim is XID : 585.
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown
> Source)
> at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown
> Source)
> at
> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown
> Source)
> at
> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown
> Source)
> at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown
> Source)
> at
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown
> Source)
> at
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeQuery(Unknown Source)
> at
> com.jolbox.bonecp.PreparedStatementHandle.executeQuery(PreparedStatementHandle.java:172)
> at
> org.datanucleus.store.rdbms.ParamLoggingPreparedStatement.executeQuery(ParamLoggingPreparedStatement.java:381)
> at
> org.datanucleus.store.rdbms.SQLController.executeStatementQuery(SQLController.java:559)
> at
> org.datanucleus.store.rdbms.query.JDOQLQuery.performExecute(JDOQLQuery.java:724)
> at org.datanucleus.store.query.Query.executeQuery(Query.java:1786)
> at org.datanucleus.store.query.Query.executeWithArray(Query.java:1672)
> at org.datanucleus.store.query.Query.execute(Query.java:1654)
> at org.datanucleus.api.jdo.JDOQuery.execute(JDOQuery.java:221)
> at
> org.apache.sentry.provider.db.service.persistent.SentryStore.getAllRoles(SentryStore.java:303)
> at
> org.apache.sentry.provider.db.service.persistent.SentryStore.access$1400(SentryStore.java:101)
> at
> org.apache.sentry.provider.db.service.persistent.SentryStore$29.execute(SentryStore.java:1610)
> at
> org.apache.sentry.provider.db.service.persistent.SentryStore$29.execute(SentryStore.java:1604)
> at
> org.apache.sentry.provider.db.service.persistent.TransactionManager.executeTransaction(TransactionManager.java:114)
> at
> org.apache.sentry.provider.db.service.persistent.SentryStore.getMSentryRolesByGroupName(SentryStore.java:1603)
> at
> org.apache.sentry.provider.db.service.persistent.SentryStore.getTSentryRolesByGroupName(SentryStore.java:1639)
> at
> org.apache.sentry.provider.db.generic.service.persistent.DelegateSentryStore.getRolesByGroups(DelegateSentryStore.java:240)
> {code}
> {code}
> Caused by: java.sql.SQLException: A lock could not be obtained due to a
> deadlock, cycle of locks and waiters is:
> Lock : ROW, SENTRY_ROLE_GM_PRIVILEGE_MAP, (1,7)
> Waiting XID : {585, S} , SENTRY, SELECT
> 'org.apache.sentry.provider.db.service.model.MSentryGMPrivilege' AS
> NUCLEUS_TYPE,A1."ACTION",A1.COMPONENT_NAME,A1.CREATE_TIME,A1.WITH_GRANT_OPTION,A1.RESOURCE_NAME_0,A1.RESOURCE_NAME_1,A1.RESOURCE_NAME_2,A1.RESOURCE_NAME_3,A1.RESOURCE_TYPE_0,A1.RESOURCE_TYPE_1,A1.RESOURCE_TYPE_2,A1.RESOURCE_TYPE_3,A1."SCOPE",A1.SERVICE_NAME,A1.GM_PRIVILEGE_ID,A0.ROLE_ID
> FROM SENTRY_ROLE_GM_PRIVILEGE_MAP A0 INNER JOIN SENTRY_GM_PRIVILEGE A1 ON
> A0.GM_PRIVILEGE_ID = A1.GM_PRIVILEGE_ID WHERE EXISTS (SELECT
> 'org.apache.sentry.provider.db.service.model.MSentryRole' AS
> NUCLEUS_TYPE,A0_SUB.ROLE_ID AS DN_DATASTOREID FROM SENTRY_ROLE A0_SUB WHERE
> A0.ROLE_ID = A0_SUB.ROLE_ID)
> Granted XID : {575, S}
> Lock : ROW, SENTRY_ROLE, (1,7)
> Waiting XID : {575, X} , SENTRY, DELETE FROM SENTRY_ROLE WHERE ROLE_ID=?
> Granted XID : {575, S} , {583, S} , {585, S}
> . The selected victim is XID : 585.
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
> Source)
> ... 38 more
> Caused by: ERROR 40001: A lock could not be obtained due to a deadlock, cycle
> of locks and waiters is:
> Lock : ROW, SENTRY_ROLE_GM_PRIVILEGE_MAP, (1,7)
> Waiting XID : {585, S} , SENTRY, SELECT
> 'org.apache.sentry.provider.db.service.model.MSentryGMPrivilege' AS
> NUCLEUS_TYPE,A1."ACTION",A1.COMPONENT_NAME,A1.CREATE_TIME,A1.WITH_GRANT_OPTION,A1.RESOURCE_NAME_0,A1.RESOURCE_NAME_1,A1.RESOURCE_NAME_2,A1.RESOURCE_NAME_3,A1.RESOURCE_TYPE_0,A1.RESOURCE_TYPE_1,A1.RESOURCE_TYPE_2,A1.RESOURCE_TYPE_3,A1."SCOPE",A1.SERVICE_NAME,A1.GM_PRIVILEGE_ID,A0.ROLE_ID
> FROM SENTRY_ROLE_GM_PRIVILEGE_MAP A0 INNER JOIN SENTRY_GM_PRIVILEGE A1 ON
> A0.GM_PRIVILEGE_ID = A1.GM_PRIVILEGE_ID WHERE EXISTS (SELECT
> 'org.apache.sentry.provider.db.service.model.MSentryRole' AS
> NUCLEUS_TYPE,A0_SUB.ROLE_ID AS DN_DATASTOREID FROM SENTRY_ROLE A0_SUB WHERE
> A0.ROLE_ID = A0_SUB.ROLE_ID)
> Granted XID : {575, S}
> Lock : ROW, SENTRY_ROLE, (1,7)
> Waiting XID : {575, X} , SENTRY, DELETE FROM SENTRY_ROLE WHERE ROLE_ID=?
> Granted XID : {575, S} , {583, S} , {585, S}
> . The selected victim is XID : 585.
> {code}
> I think there is some problem in handling generic privileges.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)