-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/60518/
-----------------------------------------------------------
(Updated June 30, 2017, 7 p.m.)
Review request for sentry, Alexander Kolbasov, kalyan kumar kalvagadda, Na Li,
and Vamsee Yarlagadda.
Changes
-------
Addressed all Lina's changes.
Bugs: sentry-1815
https://issues.apache.org/jira/browse/sentry-1815
Repository: sentry
Description
-------
This patch uses the new generation ID for HMS snapshots on the HDFS sync as
well. When HDFS requestes an older generation ID, then this patch will return a
snapshot with the newer generation ID.
Help for the reviewer:
HDFS side
- SentryAuthorizationInfo is a thread that runs every 500ms to request new
updates from Sentry. This request is called from
SentryAuthorizationInfo.update()
- SentryAuthorizationInfo.update() calls SentryUpdater.getUpdates() which calls
SentryHDFSServiceClient.getAllUpdatesFrom() which calls
SentryHDFSServiceProcessor.get_authz_updates().
The SentryAuthorizationInfo class has the information of path and permission
ID stored on the UpdateableAuthzPaths class.
SentryUpdater gets such information from the UpdateableAuthzPaths gotten from
SentryAuthorizationInfo, and then calls the mentioned methods above until
arrive to the get_authz_updates() which is the call to the Thrift client.
SENTRY side
- Sentry receives the HDFS thrift call on the
SentryHDFSServiceProcessor.get_authz_updates() method which calls
SentryPlugin.getAllPathsUpdatesFrom().
- The SentryPlugin will call DBUpdateForwarder.getAllUpdatesFrom() later for
each update type, PathUpdates and PermissionUpdates.
SENTRY PATH/PERM UPDATES
- The DBUpdateForwarder.getAllPathsUpdatesFrom() gets full images or delta
updates based on the conditions.
- For full images, it uses the ImageRetriever interface (PathImageRetriever,
PermImageRetriever).
- For delta changes, it uses the DeltaRetriever interface (PathDeltaRetriever,
PermDeltaRetriever).
- These two retrieves call the SentryStore to get either full images or delta
changes.
SENTRY STORE
- The call to the SentryStore to retrieve a full paths image will pass the
latest image ID so it can be sent to HDFS.
Diffs (updated)
-----
sentry-hdfs/sentry-hdfs-common/src/main/java/org/apache/sentry/hdfs/ImageRetriever.java
e96140dc5322e25d20ff14b8fe85d769f0103362
sentry-hdfs/sentry-hdfs-common/src/main/java/org/apache/sentry/hdfs/PathsUpdate.java
49befee21953c7a0d77424379cefc5d3af43337a
sentry-hdfs/sentry-hdfs-common/src/main/java/org/apache/sentry/hdfs/PermissionsUpdate.java
ebb0b96f5250d08a3bd262255da82afe2e6c313f
sentry-hdfs/sentry-hdfs-common/src/main/java/org/apache/sentry/hdfs/ServiceConstants.java
0741ebcbe9520fb70de20d2d45c6f0a741bb73c0
sentry-hdfs/sentry-hdfs-common/src/main/java/org/apache/sentry/hdfs/Updateable.java
12baaa4b82fcad14aa07fa73c4e67c84d885c580
sentry-hdfs/sentry-hdfs-common/src/main/java/org/apache/sentry/hdfs/UpdateableAuthzPaths.java
ad7f8c9ee3eec11324e562f0cabf273259084401
sentry-hdfs/sentry-hdfs-namenode-plugin/src/main/java/org/apache/sentry/hdfs/SentryAuthorizationInfo.java
90ba72184ce55013c88905bf61314c908612b00a
sentry-hdfs/sentry-hdfs-namenode-plugin/src/main/java/org/apache/sentry/hdfs/SentryUpdater.java
49f39b119cabd660d4890192c462b37a05ca479e
sentry-hdfs/sentry-hdfs-namenode-plugin/src/main/java/org/apache/sentry/hdfs/UpdateableAuthzPermissions.java
0259f4496050dc546e52a66c11493071ec36bc0b
sentry-hdfs/sentry-hdfs-service/src/main/java/org/apache/sentry/hdfs/DBUpdateForwarder.java
f4086fb22007639fcc4a8dda8cea8a91e6a5fafd
sentry-hdfs/sentry-hdfs-service/src/main/java/org/apache/sentry/hdfs/PathImageRetriever.java
de9474313b47be35b3803fd22fcb3d89864bf326
sentry-hdfs/sentry-hdfs-service/src/main/java/org/apache/sentry/hdfs/PermImageRetriever.java
bad10995b23706321c974efdaaec6c60ec6ecf34
sentry-hdfs/sentry-hdfs-service/src/main/java/org/apache/sentry/hdfs/SentryHDFSServiceClient.java
b6b78bc0e8ef556d6eeba51341729f221c49f04e
sentry-hdfs/sentry-hdfs-service/src/main/java/org/apache/sentry/hdfs/SentryHDFSServiceClientDefaultImpl.java
86d0f6252c943d139575666ef022f41b00226f23
sentry-hdfs/sentry-hdfs-service/src/main/java/org/apache/sentry/hdfs/SentryHDFSServiceProcessor.java
1c7061b96a9f19d7f789d0ce7e330f0f80424320
sentry-hdfs/sentry-hdfs-service/src/main/java/org/apache/sentry/hdfs/SentryPlugin.java
0bd08338dd1881849b180462de94293c022a1323
sentry-hdfs/sentry-hdfs-service/src/test/java/org/apache/sentry/hdfs/TestDBUpdateForwarder.java
PRE-CREATION
sentry-hdfs/sentry-hdfs-service/src/test/java/org/apache/sentry/hdfs/TestDeltaRetriever.java
PRE-CREATION
sentry-hdfs/sentry-hdfs-service/src/test/java/org/apache/sentry/hdfs/TestImageRetriever.java
PRE-CREATION
sentry-hdfs/sentry-hdfs-service/src/test/java/org/apache/sentry/hdfs/TestSentryHDFSServiceProcessor.java
PRE-CREATION
sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/PathsImage.java
fd56ce226d43b8201355942772cb93116acfa3e9
sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/PermissionsImage.java
f03e93f7aed2b1543270337291e9e6b6e0b3df59
sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStore.java
1402ab17592bf952614fb58c4ce15f22c6faee71
sentry-provider/sentry-provider-db/src/test/java/org/apache/sentry/provider/db/service/persistent/TestSentryStore.java
ac266fe6ef7bc1658341d34a7651b2e06f0c42c1
Diff: https://reviews.apache.org/r/60518/diff/4/
Changes: https://reviews.apache.org/r/60518/diff/3-4/
Testing
-------
Added new unit tests:
- TestDBUpdateForwarder
- TestImageRetriever
- TestDeltaRetriever
Thanks,
Sergio Pena