-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62411/
-----------------------------------------------------------
(Updated Sept. 21, 2017, 12:59 p.m.)
Review request for sentry, Alexander Kolbasov, Colm O hEigeartaigh, and kalyan
kumar kalvagadda.
Changes
-------
Rebased patch to latest master changes.
Bugs: sentry-1958
https://issues.apache.org/jira/browse/sentry-1958
Repository: sentry
Description
-------
This patch bumps the Hive version of hive-authz1 to Hive 2.0. Moving to authz2
has been a little complicated, so doing an incremental patch was preffered.
Also, we're taking advantage of the unit tests nad e2e tests that already exist
on Sentry. There are tests that are not on the authz2, so this is why I
preffered to look into bumping the Hive 2.0 version first.
The following issues with Hive 2.0 were found and addressed on Sentry:
- Hive 2.0.1 has a bug that Sentry cannot workaround.
- Hive 2.1.1 and higher has a different bug that Sentry cannot workaround.
- Hive CBO has a bug where ReadIdentity partitions do not have parents causing
Sentry to request extra privileges that the user might not have
CBO is disabled on the Sentry tests and it must be disabled on production as
well.
- HIVE-11145: Remove OFFLINE and NO_DROP from tables and partitions
Removed tests that use the protection mode operations as Hive do not support
them any more.
- HIVE-10453: HS2 leaking open file descriptors when using UDFs
Hive 2.0 clears all functions after a session is closed causing other users
who want to execute such
function to fail because they lost the function scope and they do not have
permissions to create functions
- HIVE-12320: hive.metastore.disallow.incompatible.col.type.changes should be
true by default
Sentry had some issues on the tests due to this Hive change.
- HIVE-10307: Support to use number literals in partition column
Hive 2.0 added an extra validation when using ALTER TABLE ... PARTITION
(spec) that throws an error if
spec is not a partition column.
- The HS2 webui fails to start when concurrency mode is enabled. The Sentry
tests are now configured to put
Hive in test mode so that the webui is not initialized.
- There are some column names that cannot be used as they are reservered by
Hive, i.e 'date' column name fails
in some Sentry tests.
- Hive 2.0 switched to log4j2 causing some Sentry tests to fail.
Important changes on Sentry:
- Hive 2.0 has an authz1 bug with the use of SentryMetastoreFilterHook class.
This class is replaced automatically by Hive with a default one that uses
authz2. To make minimal changes on Sentry, a new class is created
(SentryHiveAuthorizerImpl) that only deals with metastore filtering. Also, the
class SentryHiveAuthorizerFactory is set by the HiveAuthzBindingSessionHook
automatically when a HS2 session is opened. However, this new authorizer must
be set manually on the hive-site.xml so that other clients who use the HMS
Client can use this new filter class (info is mentioned on the
SentryHiveAuthorizerFactory class.
There will be follow-up patches to fix the following:
- Remove SentryMetastoreFilterHook and improve the SentryHiveAuthorizerImpl to
avoid the overhead of converting a list of hive privileges to a list of strings
and viceversa.
- Merge authz1 and authz2 dependencies.
- Review current authz2 and merge code into the new changes.
Diffs (updated)
-----
dev-support/test-patch.py ac91b590c93884911d27928ac60108dcaa5d81ed
pom.xml 53679f90b96bbd4db5f0ac004d0de542e439c7f7
sentry-binding/sentry-binding-hive-follower-v2/pom.xml
fa7e9282592bf5fe15a35921b7173c81b45a1f1f
sentry-binding/sentry-binding-hive-follower/pom.xml
e69519cc63d5c89db6098fa169089b34dbaadae8
sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAlterPartitionMessage.java
1e636c94afc99678658bdafe74fdd7aff7e12d92
sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropPartitionMessage.java
d3ebf603f2d81b3fed7ec0d33031446185b80cb5
sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONMessageDeserializer.java
cc0bbec830436241ef69fc3dc9a727bf105ae6e7
sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONMessageFactory.java
efdf8b8a5b4eeca08e2a4ad39c95ab86e7855a76
sentry-binding/sentry-binding-hive-v2/pom.xml
5f5cbf3c15df324d741e5eca7b951e4aab5bd0d3
sentry-binding/sentry-binding-hive/pom.xml
92147e18b0560bd266bfc82d65b9bc70af3df627
sentry-binding/sentry-binding-hive/src/main/java/org/apache/hadoop/hive/ql/exec/SentryGrantRevokeTask.java
97dbd2a503bf9d61c18f6f4fcaa494cbd429f07d
sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/HiveAuthzBindingSessionHook.java
a3aa0b0351deb7b41dec3e5bc7b0e62727e3cb21
sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/authz/HiveAuthzPrivilegesMap.java
9f3d42d3787fbceb62e9fd5e22395c17010867f4
sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/authz/SentryHiveAuthorizerFactory.java
PRE-CREATION
sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/authz/SentryHiveAuthorizerImpl.java
PRE-CREATION
sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/metastore/AuthorizingObjectStore.java
d20da81efcbc796456c114654df0261964c2cfc1
sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/metastore/AuthorizingObjectStoreBase.java
9e066e12f1b3539e8787878723eec153dfd68d32
sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/metastore/MetastoreAuthzBindingBase.java
6df4885cea3868b451ed14a5e354dd45794cbb3f
sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/metastore/SentryMetastorePostEventListener.java
3ec2eedab99e7ec66e2dc69b9c8af8eb482cac08
sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/metastore/SentryMetastorePostEventListenerBase.java
5b9274e337d1f8a05e2b01384cb3a2e95ad07293
sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/metastore/SentryMetastorePostEventListenerNotificationLog.java
58470d6ade3467ef7b03428272d61dc0dd1accea
sentry-binding/sentry-binding-hive/src/test/java/org/apache/sentry/binding/hive/TestSentryHiveAuthorizationTaskFactory.java
aed218ec0308405c32e6a070451ef38c4c67bb27
sentry-binding/sentry-binding-hive/src/test/java/org/apache/sentry/binding/hive/TestURI.java
aa3de64a404b2a8e1dbe245a9cd2298c41745fc3
sentry-binding/sentry-binding-hive/src/test/resources/log4j2.properties
PRE-CREATION
sentry-provider/sentry-provider-db/pom.xml
6b7d3c07a0cdf43ff925c22d58c290a3a9affe8b
sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryPolicyStoreProcessor.java
cd854006f2b0e73a8a1bcb3c87a4df01bd30cc14
sentry-tests/sentry-tests-hive/pom.xml
51801dc8bdcd449f9acaa5658855a4227c47c56e
sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestDbDDLAuditLog.java
e105f003b79b0ad9bec58b24d3e7fd87576e7ad7
sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hdfs/TestHDFSIntegrationAdvanced.java
2073d85f27349c933bd936f87dc754c6fb30a729
sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hdfs/TestHDFSIntegrationBase.java
718b02cbd9df9a551bd4de1768f93a914cad7b32
sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hdfs/TestHDFSIntegrationEnd2End.java
d4bc97d2f59efee00034036ebc716ab69cf2116b
sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/AbstractTestWithStaticConfiguration.java
0a39f5954de5867b4e64e9be3529219654d31378
sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/TestMetadataObjectRetrieval.java
fb0ef19a52375126d21a4c787dd31a1deacfc232
sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/TestOperationsPart1.java
3a4da5059463459af43fd04ed3b34b6468848e7e
sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/TestPrivilegesAtFunctionScope.java
249d3bcfe8b1f9f2a1256280cf9b80527cef1e4c
sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/hiveserver/HiveServerFactory.java
f3f58f64f66ea693ab99d2dd5a9b0eb298ae7d0f
sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/metastore/TestDBNotificationListenerInBuiltDeserializer.java
e9b3a43debb6d47818c54f6a1f646f13668e35f2
sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/metastore/TestSentryListenerSentryDeserializer.java
f43b316928a6354674e824d04b8e7c4a9e5bec00
sentry-tests/sentry-tests-hive/src/test/resources/log4j2.properties
PRE-CREATION
sentry-tests/sentry-tests-kafka/pom.xml
56a3ef10a9071929776cb7211bdb8ead921deace
sentry-tests/sentry-tests-solr/pom.xml
c70476808688c80e1723d5e65e3b8cf6d1b64250
sentry-tests/sentry-tests-sqoop/pom.xml
9e7cee95be06c68b0eaa456a80d4120576ec977b
Diff: https://reviews.apache.org/r/62411/diff/2/
Changes: https://reviews.apache.org/r/62411/diff/1-2/
Testing
-------
Thanks,
Sergio Pena