This is an automated email from the ASF dual-hosted git repository.
mehul pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git
The following commit(s) were added to refs/heads/master by this push:
new bf2206f RANGER-2764 : Role API - Duplicate key value violates unique
constraint "x_ranger_global_state_uk_state_name"
bf2206f is described below
commit bf2206f36343bd0f8562f3a38819217ce0ecffe5
Author: maheshbandal <[email protected]>
AuthorDate: Tue Mar 31 12:50:15 2020 +0530
RANGER-2764 : Role API - Duplicate key value violates unique constraint
"x_ranger_global_state_uk_state_name"
Signed-off-by: Mehul Parikh <[email protected]>
---
.../optimized/current/ranger_core_db_mysql.sql | 7 ++-
...6-insert-statename-in-x-ranger-global-state.sql | 43 ++++++++++++++++++
.../optimized/current/ranger_core_db_oracle.sql | 5 ++
...6-insert-statename-in-x-ranger-global-state.sql | 53 ++++++++++++++++++++++
.../optimized/current/ranger_core_db_postgres.sql | 6 +++
...6-insert-statename-in-x-ranger-global-state.sql | 48 ++++++++++++++++++++
.../current/ranger_core_db_sqlanywhere.sql | 8 ++++
...6-insert-statename-in-x-ranger-global-state.sql | 33 ++++++++++++++
.../optimized/current/ranger_core_db_sqlserver.sql | 5 ++
...6-insert-statename-in-x-ranger-global-state.sql | 36 +++++++++++++++
.../java/org/apache/ranger/biz/RoleDBStore.java | 34 ++++++++++++--
.../org/apache/ranger/db/XXGlobalStateDao.java | 39 ++++++++--------
12 files changed, 294 insertions(+), 23 deletions(-)
diff --git a/security-admin/db/mysql/optimized/current/ranger_core_db_mysql.sql
b/security-admin/db/mysql/optimized/current/ranger_core_db_mysql.sql
index 2d93fc4..91f8db7 100644
--- a/security-admin/db/mysql/optimized/current/ranger_core_db_mysql.sql
+++ b/security-admin/db/mysql/optimized/current/ranger_core_db_mysql.sql
@@ -1674,6 +1674,7 @@ INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('043',UTC_TIMESTAMP(),'Ranger 1.0.0',UTC_TIMESTAMP(),'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('044',UTC_TIMESTAMP(),'Ranger 1.0.0',UTC_TIMESTAMP(),'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('045',UTC_TIMESTAMP(),'Ranger 1.0.0',UTC_TIMESTAMP(),'localhost','Y');
+INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('046',UTC_TIMESTAMP(),'Ranger 1.0.0',UTC_TIMESTAMP(),'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('DB_PATCHES',UTC_TIMESTAMP(),'Ranger 1.0.0',UTC_TIMESTAMP(),'localhost','Y');
INSERT INTO x_user_module_perm
(user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed)
@@ -1721,6 +1722,10 @@ INSERT INTO x_user_module_perm
(user_id,module_id,create_time,update_time,added_
INSERT INTO x_user_module_perm
(user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed)
VALUES (getXportalUIdByLoginId('rangerusersync'),getModulesIdByName('Security
Zone'),UTC_TIMESTAMP(),UTC_TIMESTAMP(),getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1);
INSERT INTO x_user_module_perm
(user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed)
VALUES (getXportalUIdByLoginId('rangertagsync'),getModulesIdByName('Security
Zone'),UTC_TIMESTAMP(),UTC_TIMESTAMP(),getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1);
+INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(UTC_TIMESTAMP(),UTC_TIMESTAMP(),getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerRole','{"Version":"1"}');
+INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(UTC_TIMESTAMP(),UTC_TIMESTAMP(),getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerUserStore','{"Version":"1"}');
+INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(UTC_TIMESTAMP(),UTC_TIMESTAMP(),getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerSecurityZone','{"Version":"1"}');
+
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('J10001',UTC_TIMESTAMP(),'Ranger 1.0.0',UTC_TIMESTAMP(),'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('J10002',UTC_TIMESTAMP(),'Ranger 1.0.0',UTC_TIMESTAMP(),'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('J10003',UTC_TIMESTAMP(),'Ranger 1.0.0',UTC_TIMESTAMP(),'localhost','Y');
@@ -1748,4 +1753,4 @@ INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('J10033',UTC_TIMESTAMP(),'Ranger 1.0.0',UTC_TIMESTAMP(),'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('J10034',UTC_TIMESTAMP(),'Ranger 1.0.0',UTC_TIMESTAMP(),'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('J10035',UTC_TIMESTAMP(),'Ranger 1.0.0',UTC_TIMESTAMP(),'localhost','Y');
-INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('JAVA_PATCHES',UTC_TIMESTAMP(),'Ranger 1.0.0',UTC_TIMESTAMP(),'localhost','Y');
+INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('JAVA_PATCHES',UTC_TIMESTAMP(),'Ranger 1.0.0',UTC_TIMESTAMP(),'localhost','Y');
\ No newline at end of file
diff --git
a/security-admin/db/mysql/patches/046-insert-statename-in-x-ranger-global-state.sql
b/security-admin/db/mysql/patches/046-insert-statename-in-x-ranger-global-state.sql
new file mode 100644
index 0000000..cdc0aa6
--- /dev/null
+++
b/security-admin/db/mysql/patches/046-insert-statename-in-x-ranger-global-state.sql
@@ -0,0 +1,43 @@
+-- Licensed to the Apache Software Foundation (ASF) under one or more
+-- contributor license agreements. See the NOTICE file distributed with
+-- this work for additional information regarding copyright ownership.
+-- The ASF licenses this file to You under the Apache License, Version 2.0
+-- (the "License"); you may not use this file except in compliance with
+-- the License. You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+drop procedure if exists insert_statename_in_x_ranger_global_state;
+
+delimiter ;;
+create procedure insert_statename_in_x_ranger_global_state() begin
+
+ if exists (select * from information_schema.columns where
table_schema=database() and table_name = 'x_ranger_global_state' and
column_name='state_name')
+ then
+ if not exists(select * from x_ranger_global_state where
state_name='RangerRole')
+ then
+ INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(UTC_TIMESTAMP(),UTC_TIMESTAMP(),getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerRole','{"Version":"1"}');
+ end if;
+
+ if not exists(select * from x_ranger_global_state where
state_name='RangerUserStore')
+ then
+ INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(UTC_TIMESTAMP(),UTC_TIMESTAMP(),getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerUserStore','{"Version":"1"}');
+ end if;
+
+ if not exists(select * from x_ranger_global_state where
state_name='RangerSecurityZone')
+ then
+ INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(UTC_TIMESTAMP(),UTC_TIMESTAMP(),getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerSecurityZone','{"Version":"1"}');
+ end if;
+
+ end if;
+end;;
+
+delimiter ;
+call insert_statename_in_x_ranger_global_state();
+drop procedure if exists insert_statename_in_x_ranger_global_state;
diff --git
a/security-admin/db/oracle/optimized/current/ranger_core_db_oracle.sql
b/security-admin/db/oracle/optimized/current/ranger_core_db_oracle.sql
index 38e546a..b07fbf3 100644
--- a/security-admin/db/oracle/optimized/current/ranger_core_db_oracle.sql
+++ b/security-admin/db/oracle/optimized/current/ranger_core_db_oracle.sql
@@ -1870,6 +1870,7 @@ INSERT INTO x_db_version_h
(id,version,inst_at,inst_by,updated_at,updated_by,act
INSERT INTO x_db_version_h
(id,version,inst_at,inst_by,updated_at,updated_by,active) VALUES
(X_DB_VERSION_H_SEQ.nextval, '043',sys_extract_utc(systimestamp),'Ranger
1.0.0',sys_extract_utc(systimestamp),'localhost','Y');
INSERT INTO x_db_version_h
(id,version,inst_at,inst_by,updated_at,updated_by,active) VALUES
(X_DB_VERSION_H_SEQ.nextval, '044',sys_extract_utc(systimestamp),'Ranger
1.0.0',sys_extract_utc(systimestamp),'localhost','Y');
INSERT INTO x_db_version_h
(id,version,inst_at,inst_by,updated_at,updated_by,active) VALUES
(X_DB_VERSION_H_SEQ.nextval, '045',sys_extract_utc(systimestamp),'Ranger
1.0.0',sys_extract_utc(systimestamp),'localhost','Y');
+INSERT INTO x_db_version_h
(id,version,inst_at,inst_by,updated_at,updated_by,active) VALUES
(X_DB_VERSION_H_SEQ.nextval, '046',sys_extract_utc(systimestamp),'Ranger
1.0.0',sys_extract_utc(systimestamp),'localhost','Y');
INSERT INTO x_db_version_h
(id,version,inst_at,inst_by,updated_at,updated_by,active) VALUES
(X_DB_VERSION_H_SEQ.nextval, 'DB_PATCHES',sys_extract_utc(systimestamp),'Ranger
1.0.0',sys_extract_utc(systimestamp),'localhost','Y');
INSERT INTO x_user_module_perm
(id,user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed)
VALUES
(X_USER_MODULE_PERM_SEQ.nextval,getXportalUIdByLoginId('admin'),getModulesIdByName('Reports'),sys_extract_utc(systimestamp),sys_extract_utc(systimestamp),getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1);
INSERT INTO x_user_module_perm
(id,user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed)
VALUES
(X_USER_MODULE_PERM_SEQ.nextval,getXportalUIdByLoginId('admin'),getModulesIdByName('Resource
Based
Policies'),sys_extract_utc(systimestamp),sys_extract_utc(systimestamp),getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1);
@@ -1895,6 +1896,10 @@ INSERT INTO x_user_module_perm
(id,user_id,module_id,create_time,update_time,add
INSERT INTO x_user_module_perm
(id,user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed)
VALUES
(X_USER_MODULE_PERM_SEQ.nextval,getXportalUIdByLoginId('rangerusersync'),getModulesIdByName('Security
Zone'),sys_extract_utc(systimestamp),sys_extract_utc(systimestamp),getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1);
INSERT INTO x_user_module_perm
(id,user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed)
VALUES
(X_USER_MODULE_PERM_SEQ.nextval,getXportalUIdByLoginId('rangertagsync'),getModulesIdByName('Security
Zone'),sys_extract_utc(systimestamp),sys_extract_utc(systimestamp),getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1);
+INSERT INTO x_ranger_global_state
(id,create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(X_RANGER_GLOBAL_STATE_SEQ.nextval,sys_extract_utc(systimestamp),sys_extract_utc(systimestamp),getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerRole','{"Version":"1"}');
+INSERT INTO x_ranger_global_state
(id,create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(X_RANGER_GLOBAL_STATE_SEQ.nextval,sys_extract_utc(systimestamp),sys_extract_utc(systimestamp),getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerUserStore','{"Version":"1"}');
+INSERT INTO x_ranger_global_state
(id,create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(X_RANGER_GLOBAL_STATE_SEQ.nextval,sys_extract_utc(systimestamp),sys_extract_utc(systimestamp),getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerSecurityZone','{"Version":"1"}');
+
INSERT INTO x_db_version_h
(id,version,inst_at,inst_by,updated_at,updated_by,active) VALUES
(X_DB_VERSION_H_SEQ.nextval,'J10001',sys_extract_utc(systimestamp),'Ranger
1.0.0',sys_extract_utc(systimestamp),'localhost','Y');
INSERT INTO x_db_version_h
(id,version,inst_at,inst_by,updated_at,updated_by,active) VALUES
(X_DB_VERSION_H_SEQ.nextval,'J10002',sys_extract_utc(systimestamp),'Ranger
1.0.0',sys_extract_utc(systimestamp),'localhost','Y');
INSERT INTO x_db_version_h
(id,version,inst_at,inst_by,updated_at,updated_by,active) VALUES
(X_DB_VERSION_H_SEQ.nextval,'J10003',sys_extract_utc(systimestamp),'Ranger
1.0.0',sys_extract_utc(systimestamp),'localhost','Y');
diff --git
a/security-admin/db/oracle/patches/046-insert-statename-in-x-ranger-global-state.sql
b/security-admin/db/oracle/patches/046-insert-statename-in-x-ranger-global-state.sql
new file mode 100644
index 0000000..8359f77
--- /dev/null
+++
b/security-admin/db/oracle/patches/046-insert-statename-in-x-ranger-global-state.sql
@@ -0,0 +1,53 @@
+-- Licensed to the Apache Software Foundation (ASF) under one or more
+-- contributor license agreements. See the NOTICE file distributed with
+-- this work for additional information regarding copyright ownership.
+-- The ASF licenses this file to You under the Apache License, Version 2.0
+-- (the "License"); you may not use this file except in compliance with
+-- the License. You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+
+DECLARE
+ t_count number:=0;
+ v_count_1 number:=0;
+ v_count_2 number:=0;
+ v_count_3 number:=0;
+ state_name_1 varchar(255):='RangerRole';
+ state_name_2 varchar(255):='RangerUserStore';
+ state_name_3 varchar(255):='RangerSecurityZone';
+ app_data_1 varchar(255):='{"Version":"1"}';
+ x_portal_user_id number:=getXportalUIdByLoginId('admin');
+BEGIN
+ select count(*) into t_count from user_tables where table_name =
'x_ranger_global_state';
+ if (t_count > 0) then
+
+ select count(*) into v_count_1 from x_ranger_global_state where
state_name='RangerRole'
+ if (v_count_1 = 0) then
+ sql_stmt := 'INSERT INTO x_ranger_global_state
(id,create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(X_RANGER_GLOBAL_STATE_SEQ.nextval,sys_extract_utc(systimestamp),sys_extract_utc(systimestamp),:1,:2,1,:3,:4)';
+ EXECUTE IMMEDIATE sql_stmt USING
x_portal_user_id,x_portal_user_id,state_name_1,app_data_1;
+ commit;
+ end if;
+
+ select count(*) into v_count_2 from x_ranger_global_state where
state_name='RangerUserStore'
+ if (v_count_2 = 0) then
+ sql_stmt := 'INSERT INTO x_ranger_global_state
(id,create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(X_RANGER_GLOBAL_STATE_SEQ.nextval,sys_extract_utc(systimestamp),sys_extract_utc(systimestamp),:1,:2,1,:3,:4)';
+ EXECUTE IMMEDIATE sql_stmt USING
x_portal_user_id,x_portal_user_id,state_name_2,app_data_1;
+ commit;
+ end if;
+
+ select count(*) into v_count_3 from x_ranger_global_state where
state_name='RangerSecurityZone'
+ if (v_count_3 = 0) then
+ sql_stmt := 'INSERT INTO x_ranger_global_state
(id,create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(X_RANGER_GLOBAL_STATE_SEQ.nextval,sys_extract_utc(systimestamp),sys_extract_utc(systimestamp),:1,:2,1,:3,:4)';
+ EXECUTE IMMEDIATE sql_stmt USING
x_portal_user_id,x_portal_user_id,state_name_3,app_data_1;
+ commit;
+ end if;
+
+ end if;
+end;/
diff --git
a/security-admin/db/postgres/optimized/current/ranger_core_db_postgres.sql
b/security-admin/db/postgres/optimized/current/ranger_core_db_postgres.sql
index 7c2ada5..27d4f25 100644
--- a/security-admin/db/postgres/optimized/current/ranger_core_db_postgres.sql
+++ b/security-admin/db/postgres/optimized/current/ranger_core_db_postgres.sql
@@ -1797,6 +1797,7 @@ INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('043',current_timestamp,'Ranger 1.0.0',current_timestamp,'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('044',current_timestamp,'Ranger 1.0.0',current_timestamp,'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('045',current_timestamp,'Ranger 1.0.0',current_timestamp,'localhost','Y');
+INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('046',current_timestamp,'Ranger 1.0.0',current_timestamp,'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('DB_PATCHES',current_timestamp,'Ranger
1.0.0',current_timestamp,'localhost','Y');
INSERT INTO x_user_module_perm
(user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed)
VALUES
@@ -1843,6 +1844,11 @@ INSERT INTO x_user_module_perm
(user_id,module_id,create_time,update_time,added_
INSERT INTO x_user_module_perm
(user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed)
VALUES (getXportalUIdByLoginId('rangerusersync'),getModulesIdByName('Security
Zone'),current_timestamp,current_timestamp,getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1);
INSERT INTO x_user_module_perm
(user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed)
VALUES (getXportalUIdByLoginId('rangertagsync'),getModulesIdByName('Security
Zone'),current_timestamp,current_timestamp,getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1);
+
+INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(current_timestamp,current_timestamp,getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerRole','{"Version":"1"}');
+INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(current_timestamp,current_timestamp,getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerUserStore','{"Version":"1"}');
+INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(current_timestamp,current_timestamp,getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerSecurityZone','{"Version":"1"}');
+
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('J10001',current_timestamp,'Ranger 1.0.0',current_timestamp,'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('J10002',current_timestamp,'Ranger 1.0.0',current_timestamp,'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('J10003',current_timestamp,'Ranger 1.0.0',current_timestamp,'localhost','Y');
diff --git
a/security-admin/db/postgres/patches/046-insert-statename-in-x-ranger-global-state.sql
b/security-admin/db/postgres/patches/046-insert-statename-in-x-ranger-global-state.sql
new file mode 100644
index 0000000..b8b29ee
--- /dev/null
+++
b/security-admin/db/postgres/patches/046-insert-statename-in-x-ranger-global-state.sql
@@ -0,0 +1,48 @@
+-- Licensed to the Apache Software Foundation (ASF) under one or more
+-- contributor license agreements. See the NOTICE file distributed with
+-- this work for additional information regarding copyright ownership.
+-- The ASF licenses this file to You under the Apache License, Version 2.0
+-- (the "License"); you may not use this file except in compliance with
+-- the License. You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+select 'delimiter start';
+CREATE OR REPLACE FUNCTION insert_statename_in_x_ranger_global_state()
+RETURNS void AS $$
+DECLARE
+ t_count integer:=0;
+ v_count_1 integer:=0;
+ v_count_2 integer:=0;
+ v_count_3 integer:=0;
+BEGIN
+ select count(*) into t_count from pg_class where relname =
'x_ranger_global_state';
+ IF (t_count > 0) then
+
+ select count(*) into v_count_1 from x_ranger_global_state where
state_name='RangerRole';
+ IF (v_count_1 = 0) then
+ INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(current_timestamp,current_timestamp,getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerRole','{"Version":"1"}');
+ END IF;
+
+ select count(*) into v_count_2 from x_ranger_global_state where
state_name='RangerUserStore';
+ IF (v_count_2 = 0) then
+ INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(current_timestamp,current_timestamp,getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerUserStore','{"Version":"1"}');
+ END IF;
+
+ select count(*) into v_count_3 from x_ranger_global_state where
state_name='RangerSecurityZone';
+ IF (v_count_3 = 0) then
+ INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(current_timestamp,current_timestamp,getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerSecurityZone','{"Version":"1"}');
+ END IF;
+ END IF;
+END;
+$$ LANGUAGE plpgsql;
+select 'delimiter end';
+
+select insert_statename_in_x_ranger_global_state();
+select 'delimiter end';
diff --git
a/security-admin/db/sqlanywhere/optimized/current/ranger_core_db_sqlanywhere.sql
b/security-admin/db/sqlanywhere/optimized/current/ranger_core_db_sqlanywhere.sql
index 7b0509c..5c6f896 100644
---
a/security-admin/db/sqlanywhere/optimized/current/ranger_core_db_sqlanywhere.sql
+++
b/security-admin/db/sqlanywhere/optimized/current/ranger_core_db_sqlanywhere.sql
@@ -2159,6 +2159,8 @@ INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active
GO
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('045',CURRENT_TIMESTAMP,'Ranger 1.0.0',CURRENT_TIMESTAMP,'localhost','Y');
GO
+INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('046',CURRENT_TIMESTAMP,'Ranger 1.0.0',CURRENT_TIMESTAMP,'localhost','Y');
+GO
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('DB_PATCHES',CURRENT_TIMESTAMP,'Ranger
1.0.0',CURRENT_TIMESTAMP,'localhost','Y');
GO
INSERT INTO x_user_module_perm
(user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed)
VALUES
(dbo.getXportalUIdByLoginId('admin'),dbo.getModulesIdByName('Reports'),CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,dbo.getXportalUIdByLoginId('admin'),dbo.getXportalUIdByLoginId('admin'),1);
@@ -2207,6 +2209,12 @@ INSERT INTO x_user_module_perm
(user_id,module_id,create_time,update_time,added_
GO
INSERT INTO x_user_module_perm
(user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed)
VALUES
(dbo.getXportalUIdByLoginId('rangertagsync'),dbo.getModulesIdByName('Security
Zone'),CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,dbo.getXportalUIdByLoginId('admin'),dbo.getXportalUIdByLoginId('admin'),1);
GO
+INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerRole','{"Version":"1"}');
+GO
+INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerUserStore','{"Version":"1"}');
+GO
+INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerSecurityZone','{"Version":"1"}');
+GO
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('J10001',CURRENT_TIMESTAMP,'Ranger 1.0.0',CURRENT_TIMESTAMP,'localhost','Y');
GO
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('J10002',CURRENT_TIMESTAMP,'Ranger 1.0.0',CURRENT_TIMESTAMP,'localhost','Y');
diff --git
a/security-admin/db/sqlanywhere/patches/046-insert-statename-in-x-ranger-global-state.sql
b/security-admin/db/sqlanywhere/patches/046-insert-statename-in-x-ranger-global-state.sql
new file mode 100644
index 0000000..d81feca
--- /dev/null
+++
b/security-admin/db/sqlanywhere/patches/046-insert-statename-in-x-ranger-global-state.sql
@@ -0,0 +1,33 @@
+-- Licensed to the Apache Software Foundation (ASF) under one or more
+-- contributor license agreements. See the NOTICE file distributed with
+-- this work for additional information regarding copyright ownership.
+-- The ASF licenses this file to You under the Apache License, Version 2.0
+-- (the "License"); you may not use this file except in compliance with
+-- the License. You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+BEGIN
+ IF EXISTS(select * from SYS.SYSCOLUMNS where tname =
'x_ranger_global_state' and cname='state_name') THEN
+
+ IF NOT EXISTS(select * from x_ranger_global_state where
state_name='RangerRole') THEN
+ INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerRole','{"Version":"1"}');
+ END IF;
+
+ IF NOT EXISTS(select * from x_ranger_global_state where
state_name='RangerUserStore') THEN
+ INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerUserStore','{"Version":"1"}');
+ END IF;
+
+ IF NOT EXISTS(select * from x_ranger_global_state where
state_name='RangerSecurityZone') THEN
+ INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerSecurityZone','{"Version":"1"}');
+ END IF;
+ END IF;
+END
+GO
+EXIT
\ No newline at end of file
diff --git
a/security-admin/db/sqlserver/optimized/current/ranger_core_db_sqlserver.sql
b/security-admin/db/sqlserver/optimized/current/ranger_core_db_sqlserver.sql
index 25b3bed..a940709 100644
--- a/security-admin/db/sqlserver/optimized/current/ranger_core_db_sqlserver.sql
+++ b/security-admin/db/sqlserver/optimized/current/ranger_core_db_sqlserver.sql
@@ -3902,6 +3902,7 @@ INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('043',CURRENT_TIMESTAMP,'Ranger 1.0.0',CURRENT_TIMESTAMP,'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('044',CURRENT_TIMESTAMP,'Ranger 1.0.0',CURRENT_TIMESTAMP,'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('045',CURRENT_TIMESTAMP,'Ranger 1.0.0',CURRENT_TIMESTAMP,'localhost','Y');
+INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('046',CURRENT_TIMESTAMP,'Ranger 1.0.0',CURRENT_TIMESTAMP,'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('DB_PATCHES',CURRENT_TIMESTAMP,'Ranger
1.0.0',CURRENT_TIMESTAMP,'localhost','Y');
INSERT INTO x_user_module_perm
(user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed)
VALUES
(dbo.getXportalUIdByLoginId('admin'),dbo.getModulesIdByName('Reports'),CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,dbo.getXportalUIdByLoginId('admin'),dbo.getXportalUIdByLoginId('admin'),1);
INSERT INTO x_user_module_perm
(user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed)
VALUES (dbo.getXportalUIdByLoginId('admin'),dbo.getModulesIdByName('Resource
Based
Policies'),CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,dbo.getXportalUIdByLoginId('admin'),dbo.getXportalUIdByLoginId('admin'),1);
@@ -3927,6 +3928,10 @@ INSERT INTO x_user_module_perm
(user_id,module_id,create_time,update_time,added_
INSERT INTO x_user_module_perm
(user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed)
VALUES
(dbo.getXportalUIdByLoginId('rangerusersync'),dbo.getModulesIdByName('Security
Zone'),CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,dbo.getXportalUIdByLoginId('admin'),dbo.getXportalUIdByLoginId('admin'),1);
INSERT INTO x_user_module_perm
(user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed)
VALUES
(dbo.getXportalUIdByLoginId('rangertagsync'),dbo.getModulesIdByName('Security
Zone'),CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,dbo.getXportalUIdByLoginId('admin'),dbo.getXportalUIdByLoginId('admin'),1);
+INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerRole','{"Version":"1"}');
+INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerUserStore','{"Version":"1"}');
+INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerSecurityZone','{"Version":"1"}');
+
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('J10001',CURRENT_TIMESTAMP,'Ranger 1.0.0',CURRENT_TIMESTAMP,'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('J10002',CURRENT_TIMESTAMP,'Ranger 1.0.0',CURRENT_TIMESTAMP,'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('J10003',CURRENT_TIMESTAMP,'Ranger 1.0.0',CURRENT_TIMESTAMP,'localhost','Y');
diff --git
a/security-admin/db/sqlserver/patches/046-insert-statename-in-x-ranger-global-state.sql
b/security-admin/db/sqlserver/patches/046-insert-statename-in-x-ranger-global-state.sql
new file mode 100644
index 0000000..1d37a3b
--- /dev/null
+++
b/security-admin/db/sqlserver/patches/046-insert-statename-in-x-ranger-global-state.sql
@@ -0,0 +1,36 @@
+-- Licensed to the Apache Software Foundation (ASF) under one or more
+-- contributor license agreements. See the NOTICE file distributed with
+-- this work for additional information regarding copyright ownership.
+-- The ASF licenses this file to You under the Apache License, Version 2.0
+-- (the "License"); you may not use this file except in compliance with
+-- the License. You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+GO
+IF EXISTS(select * from INFORMATION_SCHEMA.columns where table_name =
'x_ranger_global_state' and column_name = 'state_name')
+ BEGIN
+
+ IF NOT EXISTS(select * from x_ranger_global_state where
state_name='RangerRole')
+ BEGIN
+ INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerRole','{"Version":"1"}');
+ END;
+
+ IF NOT EXISTS(select * from x_ranger_global_state where
state_name='RangerUserStore')
+ BEGIN
+ INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerUserStore','{"Version":"1"}');
+ END;
+
+ IF NOT EXISTS(select * from x_ranger_global_state where
state_name='RangerSecurityZone')
+ BEGIN
+ INSERT INTO x_ranger_global_state
(create_time,update_time,added_by_id,upd_by_id,version,state_name,app_data)
VALUES
(CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1,'RangerSecurityZone','{"Version":"1"}');
+ END;
+ END;
+GO
+EXIT
diff --git
a/security-admin/src/main/java/org/apache/ranger/biz/RoleDBStore.java
b/security-admin/src/main/java/org/apache/ranger/biz/RoleDBStore.java
index c4a32e4..9d2f0ba 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/RoleDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/RoleDBStore.java
@@ -33,6 +33,7 @@ import
org.apache.ranger.authorization.hadoop.config.RangerAdminConfig;
import org.apache.ranger.common.MessageEnums;
import org.apache.ranger.common.RESTErrorUtil;
import org.apache.ranger.common.RangerRoleCache;
+import org.apache.ranger.common.db.RangerTransactionSynchronizationAdapter;
import org.apache.ranger.db.RangerDaoManager;
import org.apache.ranger.entity.*;
import org.apache.ranger.plugin.model.RangerRole;
@@ -68,6 +69,9 @@ public class RoleDBStore implements RoleStore {
@Autowired
RangerBizUtil bizUtil;
+
+ @Autowired
+ RangerTransactionSynchronizationAdapter
transactionSynchronizationAdapter;
RangerAdminConfig config;
@@ -105,7 +109,8 @@ public class RoleDBStore implements RoleStore {
throw restErrorUtil.createRESTException("role with name: " +
role.getName() + " already exists", MessageEnums.ERROR_DUPLICATE_OBJECT);
}
-
daoMgr.getXXGlobalState().onGlobalAppDataChange(RANGER_ROLE_GLOBAL_STATE_NAME);
+ Runnable roleVersionUpdater = new RoleVersionUpdater(daoMgr);
+
transactionSynchronizationAdapter.executeOnTransactionCommit(roleVersionUpdater);
RangerRole createdRole = roleService.create(role);
if (createdRole == null) {
@@ -133,7 +138,8 @@ public class RoleDBStore implements RoleStore {
Gson gsonBuilder = new
GsonBuilder().setDateFormat("yyyyMMdd-HH:mm:ss.SSS-Z").create();
RangerRole oldRole = gsonBuilder.fromJson(xxRole.getRoleText(),
RangerRole.class);
-
daoMgr.getXXGlobalState().onGlobalAppDataChange(RANGER_ROLE_GLOBAL_STATE_NAME);
+ Runnable roleVersionUpdater = new RoleVersionUpdater(daoMgr);
+
transactionSynchronizationAdapter.executeOnTransactionCommit(roleVersionUpdater);
RangerRole updatedRole = roleService.update(role);
if (updatedRole == null) {
@@ -176,7 +182,8 @@ public class RoleDBStore implements RoleStore {
ensureRoleDeleteAllowed(roleName);
-
daoMgr.getXXGlobalState().onGlobalAppDataChange(RANGER_ROLE_GLOBAL_STATE_NAME);
+ Runnable roleVersionUpdater = new RoleVersionUpdater(daoMgr);
+
transactionSynchronizationAdapter.executeOnTransactionCommit(roleVersionUpdater);
RangerRole role = roleService.read(xxRole.getId());
roleRefUpdater.cleanupRefTables(role);
@@ -192,7 +199,8 @@ public class RoleDBStore implements RoleStore {
ensureRoleDeleteAllowed(role.getName());
-
daoMgr.getXXGlobalState().onGlobalAppDataChange(RANGER_ROLE_GLOBAL_STATE_NAME);
+ Runnable roleVersionUpdater = new RoleVersionUpdater(daoMgr);
+
transactionSynchronizationAdapter.executeOnTransactionCommit(roleVersionUpdater);
roleRefUpdater.cleanupRefTables(role);
roleService.delete(role);
@@ -374,5 +382,23 @@ public class RoleDBStore implements RoleStore {
XXRole role = daoMgr.getXXRole().findByRoleName(name);
return role != null;
}
+
+ public static class RoleVersionUpdater implements Runnable {
+
+ final RangerDaoManager daoManager;
+
+ public RoleVersionUpdater(RangerDaoManager daoManager) {
+ this.daoManager = daoManager;
+ }
+
+ @Override
+ public void run() {
+ try {
+
this.daoManager.getXXGlobalState().onGlobalAppDataChange(RANGER_ROLE_GLOBAL_STATE_NAME);
+ } catch (Exception e) {
+ LOG.error("Cannot update GlobalState version for
state:[" + RANGER_ROLE_GLOBAL_STATE_NAME + "]", e);
+ }
+ }
+ }
}
diff --git
a/security-admin/src/main/java/org/apache/ranger/db/XXGlobalStateDao.java
b/security-admin/src/main/java/org/apache/ranger/db/XXGlobalStateDao.java
index b979459..58267bc 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXGlobalStateDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXGlobalStateDao.java
@@ -27,6 +27,8 @@ import org.apache.ranger.entity.XXGlobalState;
import org.springframework.stereotype.Service;
import javax.persistence.NoResultException;
+import javax.persistence.OptimisticLockException;
+
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -65,25 +67,26 @@ public class XXGlobalStateDao extends
BaseDao<XXGlobalState> {
}
}
- public void onGlobalAppDataChange(String stateName) throws Exception {
+ public void onGlobalAppDataChange(String stateName) throws Exception {
- if (StringUtils.isBlank(stateName)) {
- logger.error("Invalid name for state:[" + stateName +"]");
- throw new Exception("Invalid name for state:[" + stateName +"]");
- } else {
- try {
- XXGlobalState globalState = findByStateName(stateName);
- if (globalState == null) {
- createGlobalStateForAppDataVersion(stateName);
- } else {
- updateGlobalStateForAppDataVersion(globalState, stateName);
- }
- } catch (Exception exception) {
- logger.error("Cannot create/update GlobalState for state:[" +
stateName + "]", exception);
- throw exception;
- }
- }
- }
+ if (StringUtils.isBlank(stateName)) {
+ logger.error("Invalid name for state:[" + stateName +
"]");
+ throw new Exception("Invalid name for state:[" +
stateName + "]");
+ } else {
+ try {
+ XXGlobalState globalState =
findByStateName(stateName);
+ if (globalState == null) {
+
createGlobalStateForAppDataVersion(stateName);
+ } else {
+
updateGlobalStateForAppDataVersion(globalState, stateName);
+ }
+ } catch (OptimisticLockException |
org.eclipse.persistence.exceptions.OptimisticLockException ole) {
+ logger.warn("One or more objects cannot be
updated because it has changed or been deleted since it was last read. Unable
to update GlobalState for state:[" + stateName + "] continuing...");
+ } catch (Exception exception) {
+ logger.warn("Cannot create/update GlobalState
for state:[" + stateName + "] continuing...");
+ }
+ }
+ }
public Long getAppDataVersion(String stateName) {
Long ret = null;