----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/71142/#review216799 -----------------------------------------------------------
security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java Line 271 (original), 271 (patched) <https://reviews.apache.org/r/71142/#comment304019> - updated updateUserIDReference() method handled only 2 specific columns "added_by_id" and "upd_by_id", while the earlier implementation was generic. Why is this change needed? - in a subsequent patch, please consider refactoring to isolate the knowledge of columnNames to respective DAOs, instead of XPortalUserService.java calling each DAO with specific column names class BaseDao { void removeXPortalUserIdRefs(Long userId) { Table table = tClass.getAnnotation(Table.class); String tableName = table != null ? table.name() : null; String[] columnNames = getColumnNameRefsToXPortalUserId(); if (userId != null && tableName != null && columnNames != null && columnNames.length > 0) { for (String columnName : columnNames) { String sql = "update " + tableName + " set " + columnName + "=null where " + columnName + "=?userId"; Query query = getEntityManager().createNativeQuery(sql).setParameter("userId", userId); int count = query.executeUpdate(); if (count > 0){ logger.warn(count + " records updated in table '" + tableName + "' with: set " + columnName + "=null where " + columnName + "=" + userId); } } } } // DAOs representing tables having columns that reference x_portal_user.id should override this method public String[] getColumnNameRefsToXPortalUserId() { return null; } } class XXRoleDao extends BaseDao<XXRole> { private static final String[] XPORTALUSER_ID_REFS = new String[] { "added_by_id, "upd_by_id" }; ... @Override public String[] getColumnNameRefsToXPortalUserId() { return XPORTALUSER_ID_REFS; } } - Madhan Neethiraj On July 23, 2019, 9:48 a.m., Pradeep Agrawal wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/71142/ > ----------------------------------------------------------- > > (Updated July 23, 2019, 9:48 a.m.) > > > Review request for ranger, Ankita Sinha, bhavik patel, Gautam Borad, Abhay > Kulkarni, Madhan Neethiraj, Mehul Parikh, Nikhil P, Nitin Galave, Ramesh > Mani, Sailaja Polavarapu, and Velmurugan Periasamy. > > > Bugs: RANGER-2513 > https://issues.apache.org/jira/browse/RANGER-2513 > > > Repository: ranger > > > Description > ------- > > **Problem Statement:** > Created a security zone from a user. While trying to delete the same user, I > was unable to delete the user as "added_by_id" and "upd_by_id" field are > having references to x_portal_user(id). so due to foreign key constraint > ranger doesn't allow user deletion. > > > This is related to RANGER-2232 and RANGER-2414 as db schema has been changed > and new tables are also having "added_by_id" and "upd_by_id" columns. > > > **Proposed Solution:** > Proposed patch shall set the added_by_id and upd_by_id field value with null > value. > > > Diffs > ----- > > security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java > 4f339087d > > security-admin/src/main/java/org/apache/ranger/service/XPortalUserService.java > 493f139b3 > > > Diff: https://reviews.apache.org/r/71142/diff/1/ > > > Testing > ------- > > Steps performed for Ranger-admin(with patch): > 1. Created Build with patch and untar the build. > 2. Opened install.properties and provided db configuration in > install.properties > 3. Called setup.sh > 4. Started Ranger admin. > 5. Logged in from admin user and created a user testuser1 with admin role. > Loggedout from admin account. > 6. Logged in from testuser1 id and created a service and zone. added the > service in the zone. Loggedout from testuser1 account. > 7. Logged in from admin user and delete user testuser1. > > **Expected Behavior:** > testuser1 should be deleted and foreign key references should be updated. > > **Actual Behavior:** > testuser1 was deleted and foreign key references was updated. > > Note: Tested with MySQL, Oracle and Postgres db. > > > Thanks, > > Pradeep Agrawal > >
