[ https://issues.apache.org/jira/browse/SENTRY-1649?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15996224#comment-15996224 ]
Na Li edited comment on SENTRY-1649 at 5/5/17 8:27 PM: ------------------------------------------------------- The changes are 1. move starting HMSFollower from SentryService constructor to runServer() when starting SentryService. This allows getting notification after start()/stop() SentryService 2. create HMSFollower in runServer(). This allows HMSFollower to pick up different hive configuration after stop()/start() of SentryService. 3. HMSFollower.run() checks if the meta store URL is set in configuration. If not, return. This avoid creating local meta store. 4. Change HMSFollower initial start delay to 0 ms. Before, it was 60K ms (1 minutes). This zero delay allows test verification happens after HMSFollower gets permission from hive. 5. Close connections when HMSFollower.close() is called, which is called in SentryService.Stop(). 6. Keep setting if we should get full snapshot in HMSFollower constructor. Otherwise, when the first full snapshot has nothing, a default AuthzObj is created in sentrystore. Since the latest notification ID is still 0, next run tries to get full snapshot again. When the second full snapshot has nothing, we have "SentryAlreadyExistsException: AuthzObj: default already exists". So I move the code for setting needHiveSnapshot back to constructor. "SENTRY-1751 HMSFollower should not persist empty full snapshot" is created for this issue. 7. disable the unit test due to "SENTRY-1750 HMSFollower does not handle view update correctly". When TestHDFSIntegrationEnd2End.testViews() runs before TestHDFSIntegrationEnd2End.testColumnPrivileges(), the create view notification event causes exception in processing, and HMSFollower does not process any following event. That causes testColumnPrivileges() to fail. 8. Increase the time to wait from 100 ms to to twice of the HMSFollower task interval in testColumnPrivileges and related tests. In this way, HMSFollower should get the updates before verification. So the test is reliable. was (Author: linaataustin): The changes are 1. move starting HMSFollower from SentryService constructor to runServer() when starting SentryService. This allows getting notification after start()/stop() SentryService 2. create HMSFollower in runServer(). This allows HMSFollower to pick up different hive configuration after stop()/start() of SentryService. 3. HMSFollower.run() checks if the meta store URL is set in configuration. If not, return. This avoid creating local meta store. 4. Change HMSFollower initial start delay to 0 ms. Before, it was 60K ms (1 minutes). This zero delay allows test verification happens after HMSFollower gets permission from hive. 5. Close connections when HMSFollower.close() is called, which is called in SentryService.Stop(). 6. Keep setting if we should get full snapshot in HMSFollower constructor. Otherwise, when the first full snapshot has nothing, a default AuthzObj is created in sentrystore. Since the latest notification ID is still 0, next run tries to get full snapshot again. When the second full snapshot has nothing, we have "SentryAlreadyExistsException: AuthzObj: default already exists". So I move the code for setting needHiveSnapshot back to constructor. > Initialize HMSFollower when sentry server actually starts > --------------------------------------------------------- > > Key: SENTRY-1649 > URL: https://issues.apache.org/jira/browse/SENTRY-1649 > Project: Sentry > Issue Type: Sub-task > Components: Hdfs Plugin > Affects Versions: sentry-ha-redesign > Reporter: Hao Hao > Assignee: Na Li > Priority: Critical > Fix For: sentry-ha-redesign > > Attachments: SENTRY-1649.015-sentry-ha-redesign.patch, > SENTRY-1649.022-sentry-ha-redesign.patch, > SENTRY-1649.024-sentry-ha-redesign.patch, > SENTRY-1649.024-sentry-ha-redesign.patch, > SENTRY-1649.024-sentry-ha-redesign.patch, > SENTRY-1649.025-sentry-ha-redesign.patch, > SENTRY-1649.028-sentry-ha-redesign.patch, > SENTRY-1649.029-sentry-ha-redesign.patch, > SENTRY-1649.030-sentry-ha-redesign.patch, > SENTRY-1649.030-sentry-ha-redesign.patch, > SENTRY-1649.031-sentry-ha-redesign.patch, > SENTRY-1649.031-sentry-ha-redesign.patch, > SENTRY-1649.031-sentry-ha-redesign.patch, > SENTRY-1649.032-sentry-ha-redesign.patch, > SENTRY-1649.033-sentry-ha-redesign.patch, > SENTRY-1649.034-sentry-ha-redesign.patch, > SENTRY-1649.035-sentry-ha-redesign.patch, > SENTRY-1649.035-sentry-ha-redesign.patch, > SENTRY-1649.036-sentry-ha-redesign.patch, > SENTRY-1649.037-sentry-ha-redesign.patch, > SENTRY-1649.037-sentry-ha-redesign.patch, > SENTRY-1649.039-sentry-ha-redesign.patch, > SENTRY-1649.040-sentry-ha-redesign.patch > > > Now HMSFollower has been initialized at the constructor of SentryService. It > would be better to initialize it when the service starts, e.g runServer(). -- This message was sent by Atlassian JIRA (v6.3.15#6346)