-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/69347/
-----------------------------------------------------------

Review request for ranger, Abhay Kulkarni, Madhan Neethiraj, Mehul Parikh, 
Nikhil P, Ramesh Mani, and Velmurugan Periasamy.


Bugs: RANGER-2286
    https://issues.apache.org/jira/browse/RANGER-2286


Repository: ranger


Description
-------

**Problem Statement:** Before execution of any db/java patch db_setup.py file 
makes an entry in x_db_version_h table for that patch version and keep status 
active='N'. after this it steps ahead and try to apply the patch. if patch gets 
applies then active status is updated to 'Y'. if patch execution fails then it 
deletes that entry and terminates ranger installation so that user can retry 
the ranger install process. Sometime due to network or a runtime error Ranger 
could not change the active status to 'Y' or delete the entry in that case 
ranger install may be prevented due to leftover DB entry as the next install 
attempt may wait for the status to be 'Y' while it could be possible that there 
would not be any process which can apply the patch(this will happen in Non-HA 
case).
This prevents any further attempt to install/start Ranger without manually 
deleting the entry from the database.

**Proposed Solution:**
if entries made by a host is older than 10 minute then ranger setup process 
will try to delete such entry and retry the patch execution.

Patch execution process shall have following rules after this patch.
1) Before execution a patch setup process will check whether a patch is applied 
or not; if patch is already applied then it will move to next patch.
2) If patch is not applied then it will check whether patch status entry exist 
with active='N' in x_db_version_h table from any of the host.  
3) If patch status entry with active='N' exist in x_db_version_h table for a 
different host then ranger setup process will wait untill the another host 
applies the patch successfully and update the patch status entry to active='Y'. 
Please note that patch recheck such entry in every 2 minutes(default recheck 
interval)
4) If patch status entry with active='N' exist in x_db_version_h table for the 
same host then ranger setup process will wait for maximum 10 minutes. After 
that ranger process will delete that entry and check the entry again. if entry 
does not exist then it will try to apply the patch again else it will wait for 
forever or unless you delete such entries manually.  Please note that ranger 
will be checking the status entry every 2 minutes untill 10 minute wait time 
expires.

**Note**
1) Patch has been provided for ranger supported all the db flavors.
2) Cureent patch also removes several lines of audit db related dead code which 
is not required now.


Diffs
-----

  security-admin/scripts/db_setup.py 73b24aca0 


Diff: https://reviews.apache.org/r/69347/diff/1/


Testing
-------

**Steps performed for Ranger-admin **

1. To reproduce the case first installed ranger-0.7:
2. Now from the master branch.
3. Created Build with patch and untar the build.
4. Opened install.properties and provided db configuration in 
install.properties which was provided in ranger-0.7 branch build.
5. Called setup.sh
6. Ranger setup process shall try to apply the new db/java patches.
7. As soon as setup process started executing the patch J10014, terminated the 
script by using ctrl+c
8. logged into ranger db and ensured that J10014 patch entry has active='N'
9. Called the setup.sh again
10. setup process waited for the patch J10014 status for sometime and then it 
deleted the entry of J10014 patch from x_db_version_h table.
11.  setup process continues and applied the patch J10014 successfully.
12.  setup process completed successfully after applying all the patches.
13.  started ranger-admin and was able to see the ranger-admin dashboard page.


Thanks,

Pradeep Agrawal

Reply via email to