[ 
https://issues.apache.org/jira/browse/SENTRY-1788?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16030338#comment-16030338
 ] 

kalyan kumar kalvagadda edited comment on SENTRY-1788 at 5/30/17 11:15 PM:
---------------------------------------------------------------------------

*Root Cause:* Application was using JDO object even after the associated 
database entry was deleted.
*Fix:* Made code change so that JDO object is detached so that deletion of data 
in the database would not invalidate the object used by the application. parent 
object which is an JDO object used in 
SentryStore.dropOrRenamePrivilegeForAllRoles after associated data in the 
database is deleted. Method alterSentryRoleRevokePrivilegeCore which called 
would internally delete the data from database.As part of this exercise I have 
identified some optimization as well.

*Optimization:*
dropOrRenamePrivilegeForAllRoles method handles both drop and rename of 
privileges. There is certain logic which constructs privilege graph which is 
executed for both  dropping and renaming of the privilege. This logic needs to 
be executed only for renaming of privileges as the privilege graph constructed 
is used only when the privilege is renamed.



was (Author: kkalyan):
Identified the root cause and a solution for these failure. Testing them.
*Root Cause:* Application was using JDO object even after the associated 
database entry was deleted.
*Fix:* Made code change so that JDO object is detached so that deletion of data 
in the database would not invalidate the object used by the application. parent 
object which is an JDO object used in 
SentryStore.dropOrRenamePrivilegeForAllRoles after associated data in the 
database is deleted. Method alterSentryRoleRevokePrivilegeCore which called 
would internally delete the data from database.As part of this exercise I have 
identified some optimization as well.

*Optimization:*
dropOrRenamePrivilegeForAllRoles method handles both drop and rename of 
privileges. There is certain logic which constructs privilege graph which is 
executed for both  dropping and renaming of the privilege. This logic needs to 
be executed only for renaming of privileges as the privilege graph constructed 
is used only when the privilege is renamed.


> Sentry Store may use JDO object after the associated data is removed in DB
> --------------------------------------------------------------------------
>
>                 Key: SENTRY-1788
>                 URL: https://issues.apache.org/jira/browse/SENTRY-1788
>             Project: Sentry
>          Issue Type: Bug
>          Components: Sentry
>    Affects Versions: 1.8.0, sentry-ha-redesign
>            Reporter: kalyan kumar kalvagadda
>            Assignee: kalyan kumar kalvagadda
>             Fix For: 1.8.0, sentry-ha-redesign
>
>         Attachments: SENTRY-1788.001.patch, 
> SENTRY-1788.001-sentry-ha-redesign.patch, SENTRY-1788.002.patch, 
> SENTRY-1788.002-sentry-ha-redesign.patch
>
>
> Currently sentry store might use the JDO object after the associated data is 
> removed in DB.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to