> On June 15, 2017, 5 a.m., Alexander Kolbasov wrote:
> > sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/MHiveMetastoreImage.java
> > Lines 28 (patched)
> > <https://reviews.apache.org/r/59720/diff/8/?file=1751335#file1751335line28>
> >
> >     Naming - although the info comes from HMS, it isn't any image of 
> > HiveMetastore. It is essentially the generation.

I couldn't find a better name before, but now I did.
What about MAuthzPathsSnapshotId? This reflects the intention of the table that 
stores only snapshot identifiers for authz-paths.


> On June 15, 2017, 5 a.m., Alexander Kolbasov wrote:
> > sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStore.java
> > Lines 2582 (patched)
> > <https://reviews.apache.org/r/59720/diff/8/?file=1751337#file1751337line2587>
> >
> >     Do we really need to do it within the same transaction? It could be Ok, 
> > but if this is really expensive it might be better to do it asynchronously. 
> > We can use this approach and see whether it causes problems.

This is tricky. There are some scenarios that I think it may cause conflicts.

1. Deleting all in one transaction, then persisting in another transaction may 
cause that the HMSFollower detects that MAuthzPathsMapping is empty and 
attempts to persist a new image while one is in progress.

2. If a HMSFollower detected that MAuthzPathsMapping is empty and it triggers a 
new transaction to persist a snapshot, but just milliseconds before, the old 
thread finishes persisting, then this new thread will persist a new image (with 
a new ID) but containg duplicated content on MPaths. There are some methods 
that get information about MPaths without joining to MAuthzPathsMapping, so 
this will get incorrect results.

So I thought having this delete in the same transaction would help me avoiding 
the above issues.


> On June 15, 2017, 5 a.m., Alexander Kolbasov wrote:
> > sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStore.java
> > Line 2583 (original), 2613 (patched)
> > <https://reviews.apache.org/r/59720/diff/8/?file=1751337#file1751337line2618>
> >
> >     Can this ever happen?

This should not happen ever; but the backend DB does not have any constraint 
that a user modifies the table manually. 
Should we at least display an error in case this is found for some weird reason?


- Sergio


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/59720/#review177967
-----------------------------------------------------------


On June 14, 2017, 6:25 p.m., Sergio Pena wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/59720/
> -----------------------------------------------------------
> 
> (Updated June 14, 2017, 6:25 p.m.)
> 
> 
> Review request for sentry, Alexander Kolbasov, kalyan kumar kalvagadda, and 
> Vamsee Yarlagadda.
> 
> 
> Bugs: SENTRY-1781
>     https://issues.apache.org/jira/browse/SENTRY-1781
> 
> 
> Repository: sentry
> 
> 
> Description
> -------
> 
> This patch only adds an extra column to the MAuthzPathsMapping table that 
> contains an image identifier that will be used to detect full snapshots. This 
> patch does not increment the identifier yet, it only uses 0 for now.
> 
> TIPS for reviewers:
> 
> - package.jdo adds a new column name AUTHZ_IMG_ID to the AUTHZ_MAPS_MAPPING 
> table used to identify the paths that are part of a new hive snapshot.
> 
> - MAuthzPathsMapping.java adds the the new column and API to handle JDO 
> requests.
> 
> - SentryStore.java modifies all methods that interact with the snapshots. It 
> makes sure that
>   when persisting a new snapshot, then the authzImgID is incremented and the 
> old one is
>   deleted. Also it makes sure that retrieve/add/delete/rename/update uses the 
> current 
>   authzImgID whenver they're called.
> 
> - TestSentryStore.java adds unit tests to verify that all SentryStore API 
> work correctly
>   when a new hive snapshot is created.
> 
> 
> Diffs
> -----
> 
>   
> sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/MAuthzPathsMapping.java
>  f51894bb7e109c37997e7134e07a82f46c0a3c44 
>   
> sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/MHiveMetastoreImage.java
>  PRE-CREATION 
>   
> sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/package.jdo
>  459939b7600e05d57c7e11eefe20c2591cac0b34 
>   
> sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStore.java
>  8b19c88e52400ce096cf8f38fe2ca0313f7e46e1 
>   
> sentry-provider/sentry-provider-db/src/test/java/org/apache/sentry/provider/db/service/persistent/TestSentryStore.java
>  29878c5f1213062cb9d0a1f9666a19004b67dc52 
> 
> 
> Diff: https://reviews.apache.org/r/59720/diff/8/
> 
> 
> Testing
> -------
> 
> All unit tests run locally, but there are some flaky tests on Jenkins no 
> related to this patch.
> 
> 
> Thanks,
> 
> Sergio Pena
> 
>

Reply via email to