Major
Detail
Major
Detail
It has happened in EPP that the SecurityStorage refers to groups that never existed. (There were never any rows for these IDs in the group table.) We do not know how this happened and can no longer find out. However, this caused the commit of an import to fail, which led directly to a call from the customer. The only solution in this case is to have the SecurityStorage rebuilt.
Improvement
It is sufficient if an error is logged in this case. It is unnecessary to let the entire commit fail. This only leads to unnecessarily panicky emails and phone calls from the customer. In addition, not much can break as a result: Groups that do not exist can have neither too many nor too few rights.
Stacktrace
Expected 'com.top_logic.tool.boundsec.wrap.Group', found 'null' java.lang.ClassCastException: Expected 'com.top_logic.tool.boundsec.wrap.Group', found 'null' at com.top_logic.basic.CollectionUtil.dynamicCast(CollectionUtil.java:543) at com.top_logic.util.db.DBUtil$ResultAsMapFromStringToWrapperList.resolve(DBUtil.java:463) at com.top_logic.util.db.DBUtil$ResultAsMapFromStringToWrapperList.extractResult(DBUtil.java:451) at com.top_logic.util.db.DBUtil$ResultAsMapFromStringToWrapperList.extractResult(DBUtil.java:417) at com.top_logic.util.db.DBUtil.executeQuery(DBUtil.java:625) at com.top_logic.knowledge.security.SecurityStorage$SecurityStorageExecutor.getGroupsByObject(SecurityStorage.java:1608) at com.top_logic.element.boundsec.ElementSecurityStorage.internalUpdateSecurity(ElementSecurityStorage.java:126) at com.top_logic.knowledge.security.SecurityStorage.updateSecurity(SecurityStorage.java:1123) at com.top_logic.element.boundsec.manager.ElementSecurityUpdateManager.handleSecurityUpdate(ElementSecurityUpdateManager.java:200) at com.top_logic.element.boundsec.manager.StorageAccessManager.doHandleSecurityUpdate(StorageAccessManager.java:424) at com.top_logic.element.boundsec.manager.StorageAccessManager.handleSecurityUpdate(StorageAccessManager.java:417) at com.top_logic.knowledge.service.db2.DefaultDBContext.handleSecurityUdate(DefaultDBContext.java:1176) at com.top_logic.knowledge.service.db2.DefaultDBContext.commitTransaction(DefaultDBContext.java:757) at com.top_logic.knowledge.service.db2.TransactionImpl.internalCommit(TransactionImpl.java:163) at com.top_logic.knowledge.service.AbstractTransaction.commit(AbstractTransaction.java:71)
Test
No test. The effort to create this situation is too high in relation to the tiny changes.