----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/52283/#review151693 -----------------------------------------------------------
Thanks for the changes! Couple more questions. For readability, please add a blank line before every new block. Hive follows Sun's convention (except uses 100char line limit instead of 80): http://web.archive.org/web/20140228225807/http://www.oracle.com/technetwork/java/codeconventions-150003.pdf common/src/java/org/apache/hadoop/hive/common/EnvironmentUtils.java (line 25) <https://reviews.apache.org/r/52283/#comment220191> Is this actually mocked anywhere in the tests ? I see the tests mock the env via a HashMap. If the use of this interface is just to mock, I'm not sure if there is a good reason to use in the non-test code. Could we just directly use System.getenv there ? i.e. we can get rid of this file altogether. common/src/java/org/apache/hadoop/hive/conf/HiveConf.java (line 2524) <https://reviews.apache.org/r/52283/#comment220140> run using MR or Spark execution engines. This functionality has not been tested with Tez. common/src/java/org/apache/hadoop/hive/conf/HiveConfUtil.java (line 140) <https://reviews.apache.org/r/52283/#comment220142> "needs to be " -> "is" ? common/src/java/org/apache/hadoop/hive/conf/HiveConfUtil.java (line 141) <https://reviews.apache.org/r/52283/#comment220144> nit: "therefore not supported" common/src/java/org/apache/hadoop/hive/conf/HiveConfUtil.java (line 144) <https://reviews.apache.org/r/52283/#comment220145> nit: "job" -> "MR Job" common/src/java/org/apache/hadoop/hive/conf/HiveConfUtil.java (lines 146 - 151) <https://reviews.apache.org/r/52283/#comment220148> Could you make the following clear: Either: (1) HIVE_SERVER2_JOB_CREDSTORE_LOCATION should be configured AND HIVE_JOB_CREDSTORE_PASSWORD environment should be set. OR (2) HADOOP_CREDSTORE_PASSWORD environment should be set. IOW It's important to state that HIVE_SERVER2_JOB_CREDSTORE_LOCATION and HADOOP_CREDSTORE_PASSWORD do not work together. common/src/java/org/apache/hadoop/hive/conf/HiveConfUtil.java (line 148) <https://reviews.apache.org/r/52283/#comment220146> "this adds" -> "we use" common/src/java/org/apache/hadoop/hive/conf/HiveConfUtil.java (line 164) <https://reviews.apache.org/r/52283/#comment220163> Please add single blank line before a new block. Same in other places. common/src/java/org/apache/hadoop/hive/conf/HiveConfUtil.java (lines 173 - 175) <https://reviews.apache.org/r/52283/#comment220192> any reason we can use System.getenv directly ? Same in other places common/src/java/org/apache/hadoop/hive/conf/HiveConfUtil.java (line 179) <https://reviews.apache.org/r/52283/#comment220151> If both HIVE_JOB_CREDSTORE_PASSWORD and HADOOP_CREDSTORE_PASSWORD are not set, what happens ? Should we throw an exception ? What if HIVE_JOB_CREDSTORE_PASSWORD and HADOOP_CREDSTORE_PASSWORD are not set, but HIVE_SERVER2_JOB_CREDSTORE_LOCATION is set ? common/src/java/org/apache/hadoop/hive/conf/HiveConfUtil.java (line 188) <https://reviews.apache.org/r/52283/#comment220150> Is this ok if this is null or empty ? common/src/java/org/apache/hadoop/hive/conf/HiveConfUtil.java (lines 203 - 204) <https://reviews.apache.org/r/52283/#comment220155> Wondering if this should really be a RuntimeException, since query is pretty much hosed at this point, correct ? i.e. rollback the stack and abandon this query with an exception. ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java (line 91) <https://reviews.apache.org/r/52283/#comment220156> needed ? ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java (line 98) <https://reviews.apache.org/r/52283/#comment220158> needed ? ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecDriver.java (lines 422 - 426) <https://reviews.apache.org/r/52283/#comment220165> Easier: job.set(Constants.HADOOP_CREDENTIAL_PROVIDER_PATH_CONFIG, origKeystoreLocation == null: "", origKeystoreLocation) Wait, shouldn't we set the config before submitting the job ? ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecDriver.java <https://reviews.apache.org/r/52283/#comment220166> Blank line ok before new blocks or comments ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecDriver.java (lines 790 - 791) <https://reviews.apache.org/r/52283/#comment220167> are you fixing something that was broken ? JOBCONF_FILENAME was earlier local but you to want to allow it on any fs ? ql/src/java/org/apache/hadoop/hive/ql/exec/spark/HiveSparkClientFactory.java (lines 201 - 202) <https://reviews.apache.org/r/52283/#comment220179> Needs space after // What happens to HIVE_SERVER2_JOB_CREDSTORE_LOCATION ? Does that need to be set or checked if it is set ? I mean, do both HIVE_SERVER2_JOB_CREDSTORE_PASSWORD_ENVVAR and HIVE_SERVER2_JOB_CREDSTORE_LOCATION need to be set for former to be used ? It's worth clarifying here how Spark implementation differs from MR. I am assuming this step is in addition to the updateJobCredentialProviders invocation in Spark. ql/src/java/org/apache/hadoop/hive/ql/exec/spark/LocalHiveSparkClient.java (line 117) <https://reviews.apache.org/r/52283/#comment220180> //u -> // U... same in other places ql/src/test/org/apache/hadoop/hive/ql/exec/TestHiveCredentialProviders.java (line 20) <https://reviews.apache.org/r/52283/#comment220181> expand all imports ql/src/test/org/apache/hadoop/hive/ql/exec/TestHiveCredentialProviders.java (lines 84 - 85) <https://reviews.apache.org/r/52283/#comment220182> nit: inline oldCredStoreLocation here and in other places ql/src/test/org/apache/hadoop/hive/ql/exec/TestHiveCredentialProviders.java (line 87) <https://reviews.apache.org/r/52283/#comment220164> Please limit lines to max 100 characters. Same in other places. ql/src/test/org/apache/hadoop/hive/ql/exec/TestHiveCredentialProviders.java (lines 90 - 91) <https://reviews.apache.org/r/52283/#comment220183> again, inlined value easier to read ql/src/test/org/apache/hadoop/hive/ql/exec/TestHiveCredentialProviders.java (line 103) <https://reviews.apache.org/r/52283/#comment220184> Are we testing the case where both HADOOP_CREDENTIAL_PASSWORD_ENVVAR and HIVE_JOB_CREDSTORE_PASSWORD_ENVVAR_VAL are not set ? spark-client/src/main/java/org/apache/hive/spark/client/SparkClientImpl.java (line 447) <https://reviews.apache.org/r/52283/#comment220185> // -> // A... spark-client/src/main/java/org/apache/hive/spark/client/SparkClientImpl.java (lines 450 - 454) <https://reviews.apache.org/r/52283/#comment220190> This pattern of choosing the correct password is repeated couple times in this patch. Should we write a single utility method for this ? - Mohit Sabharwal On Oct. 5, 2016, 9:58 p.m., Vihang Karajgaonkar wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/52283/ > ----------------------------------------------------------- > > (Updated Oct. 5, 2016, 9:58 p.m.) > > > Review request for hive, Mohit Sabharwal and Sergio Pena. > > > Bugs: HIVE-14822 > https://issues.apache.org/jira/browse/HIVE-14822 > > > Repository: hive-git > > > Description > ------- > > This change adds support for credential provider for jobs launched from > HiveServer2. It also adds support for job-specific credential provider and > password which is passed to the jobs via the job configs when they are > launched from HS2. The hive specific credential provider location is > specified by a new configuration property specific to hiveserver2 and the > password to job credential provider is provided using the environment variable > > > Diffs > ----- > > common/src/java/org/apache/hadoop/hive/common/EnvironmentUtils.java > PRE-CREATION > common/src/java/org/apache/hadoop/hive/common/FileUtils.java > 3ed2d086fd8e14b9a70550c02082c1456f905a08 > common/src/java/org/apache/hadoop/hive/conf/Constants.java > 77c6aa5663c2c5358715801bc039c0fe8035e3dc > common/src/java/org/apache/hadoop/hive/conf/HiveConf.java > 43a16d7fed1d38400793e7c96a7febebe42d351b > common/src/java/org/apache/hadoop/hive/conf/HiveConfUtil.java > 16c2eafdb6888ed62168dd00f76335fa2484753b > ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java > fd640567124e1bb8b558359732764a07c8b0f2ed > ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecDriver.java > cea9582c8ccb0c79700ac7913735d4cdf52f0c7e > > ql/src/java/org/apache/hadoop/hive/ql/exec/spark/HiveSparkClientFactory.java > 784b9c9fa769eeb088e3a6408a0b29147a8b4086 > ql/src/java/org/apache/hadoop/hive/ql/exec/spark/LocalHiveSparkClient.java > c75333d7022f776aab184a4b804fd7ad7befac64 > ql/src/java/org/apache/hadoop/hive/ql/exec/spark/RemoteHiveSparkClient.java > a9f70c4100219c8929abd4e31b30d340e6ba98bd > ql/src/test/org/apache/hadoop/hive/ql/exec/TestHiveCredentialProviders.java > PRE-CREATION > > spark-client/src/main/java/org/apache/hive/spark/client/SparkClientImpl.java > 936fdafdb37c461a7a5deb97cba72d4db54a49e1 > > Diff: https://reviews.apache.org/r/52283/diff/ > > > Testing > ------- > > Testing running multiple queries on S3 with keys stored in a credential > provider > > > Thanks, > > Vihang Karajgaonkar > >