----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/55246/#review162050 -----------------------------------------------------------
sentry-hdfs/sentry-hdfs-common/src/main/java/org/apache/sentry/hdfs/PathsUpdate.java (line 196) <https://reviews.apache.org/r/55246/#comment233299> need to check `tPathUpdate == null`. sentry-hdfs/sentry-hdfs-common/src/main/java/org/apache/sentry/hdfs/PermissionsUpdate.java (line 141) <https://reviews.apache.org/r/55246/#comment233300> Need to check `tPermUpdate == null` sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStore.java (line 973) <https://reviews.apache.org/r/55246/#comment233353> Do we have any limitation of the `UpdateTransactionBlock` can be used here? Or the order of executing it and `dropSentryRole`? sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStore.java (line 978) <https://reviews.apache.org/r/55246/#comment233356> Beyond the logic of handling extra `updateTransactionBlock`, all these functions are the same as the functions they override. Can we extract all the `new TransactionBlock() {...}` together? sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStore.java (line 1209) <https://reviews.apache.org/r/55246/#comment233355> It might be a naive question. When `pm.makePersistentAll(groups)`, are the `groups` inserted as new recrods with different primary key or update in-place? I did not see `MSentryGroup` has a primary key. sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStore.java (line 3327) <https://reviews.apache.org/r/55246/#comment233340> If things go wrong, this function will return 0 as last changed ID. You might want to check every return from `getLastProcessedPermChangedID` to handle the case. An alternative is throw the `Exception` out of this function. sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStore.java (line 3345) <https://reviews.apache.org/r/55246/#comment233342> What if the `permChanges` is empty? sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStore.java (line 3357) <https://reviews.apache.org/r/55246/#comment233341> Would be nice to be consistent of the parameters between these two functions, either both use `long` or `Long`. I'd suggest to use `long` to avoid `null` parameter. sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/TransactionManager.java (line 173) <https://reviews.apache.org/r/55246/#comment233345> Line 186 has the condition `retryNum >= ...`, which makes this `while (retryNum < ...)` not necessary. sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/TransactionManager.java (line 180) <https://reviews.apache.org/r/55246/#comment233343> we can use ``` } catch (SentryUserException e) { throw e; } catch (Exception e) { retryNum++; .... } ``` sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/TransactionManager.java (line 191) <https://reviews.apache.org/r/55246/#comment233344> What is the difference between `retryCount` and `retryNum`? Btw, should we move `retryCount.inc()` after `retryNum++`? Otherwise, in the following block it would not update `retryCount.inc()`. ``` if (retryNum >= transactionRetryMax) throw new Exception(...) } ``` sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/UpdateTransactionBlock.java (line 27) <https://reviews.apache.org/r/55246/#comment233346> `{@link TransactionBlock}` sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/UpdateTransactionBlock.java (line 31) <https://reviews.apache.org/r/55246/#comment233347> Can it be `final`? sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/UpdateTransactionBlock.java (line 48) <https://reviews.apache.org/r/55246/#comment233348> Do we need an indent here? sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryPolicyStoreProcessor.java (line 248) <https://reviews.apache.org/r/55246/#comment233350> One suggestion is that we can add the following code: ``` Precondition.checkState(sentryPlugins.size() == 1) ``` So that once Sentry supports different plugins, we will not miss the oppurtunity to change here. sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/service/thrift/HMSFollower.java (line 445) <https://reviews.apache.org/r/55246/#comment233357> Shouldn't `onDropSentryPrivilege` happen after `dropPrivilege`? What if `dropPrivilege` fails in the middle, but `onDropSentryPrivlege` success? - Lei Xu On Jan. 18, 2017, 1:44 a.m., Hao Hao wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/55246/ > ----------------------------------------------------------- > > (Updated Jan. 18, 2017, 1:44 a.m.) > > > Review request for sentry, Alexander Kolbasov, kalyan kumar kalvagadda, and > Vamsee Yarlagadda. > > > Repository: sentry > > > Description > ------- > > SENTRY-1536: Refactor SentryStore transaction management to allow for extra > transactions for a single permission update > > Change-Id: I0571ca25bd8cc20b137baa5b840542f9ef8e7347 > > To persist single permission change, it needs to combine multiple things in a > single transaction: > 1. Doing the actual operation (priv change) > 2. Updating notification ID. > > All the above steps are put into in a single transaction to guarantee that > notificationID handling is atomic. > > > Diffs > ----- > > > sentry-hdfs/sentry-hdfs-common/src/main/java/org/apache/sentry/hdfs/PathsUpdate.java > 9ecd9e4d9a862804eab26594c28aa691b89947aa > > sentry-hdfs/sentry-hdfs-common/src/main/java/org/apache/sentry/hdfs/PermissionsUpdate.java > a346587fd5c41c826545738faa2f9b95e1d9f0dc > > sentry-hdfs/sentry-hdfs-namenode-plugin/src/main/java/org/apache/sentry/hdfs/UpdateableAuthzPermissions.java > 24729282bf17960152f87b1d3124caeafb47e6b2 > > sentry-hdfs/sentry-hdfs-service/src/main/java/org/apache/sentry/hdfs/SentryPlugin.java > 47c9f9dd7105ba5440a81ace9292d730df26f3cd > > sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/SentryPolicyStorePlugin.java > 2ff715f66ea6c2589a281b988438526546af3d3b > > sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/generic/service/persistent/DelegateSentryStore.java > 8e2a6d5fd8f6cdd285d47c66ca7f7e5444965d7d > > sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/MSentryPathChange.java > b88e7d17b641ddedaf1d0aa3ce4367e3fd9b3c23 > > sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/MSentryPermChange.java > 2ccace01ae5fbbb5450a656ea66dbd517cf320dd > > sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/model/package.jdo > dc8fdbfa21d5cb0bbe821c7e354e24dd025a35f6 > > sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStore.java > 0712e2c9246ba7fe0c81d42861628c60eee2cfa0 > > sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/TransactionManager.java > ec365bfaeab5d4a4fea237db83962570622cd00f > > sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/UpdateTransactionBlock.java > PRE-CREATION > > sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryPolicyStoreProcessor.java > 51217408386730d9aa01be03d1c74c71369a6b6e > > sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/service/thrift/HMSFollower.java > f3cefd6a232bfb91db28f04bebcc98ab3c1ca658 > > sentry-provider/sentry-provider-db/src/test/java/org/apache/sentry/provider/db/service/persistent/TestSentryStore.java > a35c8d7dde485cf46d61968a211d1dbb6d9d6076 > > sentry-provider/sentry-provider-db/src/test/java/org/apache/sentry/provider/db/service/persistent/TestSentryStoreImportExport.java > 1c3a4f29984379f5246da8d85fe661320c8a1043 > > sentry-provider/sentry-provider-db/src/test/java/org/apache/sentry/service/thrift/TestHMSFollower.java > d601b1e107ab3c3a4d9cc5e3038a11547182c5c9 > > Diff: https://reviews.apache.org/r/55246/diff/ > > > Testing > ------- > > New unit tests added in TestHMSFollower. > > > Thanks, > > Hao Hao > >