This is an automated email from the ASF dual-hosted git repository. xxyu pushed a commit to branch kylin5 in repository https://gitbox.apache.org/repos/asf/kylin.git
commit 2d6356bb2b33580e8311445ca4291f5c8cdae3e7 Author: Yinghao Lin <yinghao....@kyligence.io> AuthorDate: Fri Apr 14 13:35:56 2023 +0800 KYLIN-5607 Fix multi-threaded acl access --- .../src/main/java/org/apache/kylin/rest/security/AclManager.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/core-metadata/src/main/java/org/apache/kylin/rest/security/AclManager.java b/src/core-metadata/src/main/java/org/apache/kylin/rest/security/AclManager.java index 408cb16821..f5a29de063 100644 --- a/src/core-metadata/src/main/java/org/apache/kylin/rest/security/AclManager.java +++ b/src/core-metadata/src/main/java/org/apache/kylin/rest/security/AclManager.java @@ -164,9 +164,11 @@ public class AclManager { if (record.isEntriesInheriting() && record.getParentDomainObjectInfo() != null) parentAcl = readAclById(record.getParentDomainObjectInfo()); - record.init(parentAcl, aclPermissionFactory, permissionGrantingStrategy); + // Caution: Using a copied object before doing init, otherwise the original one will be polluted + AclRecord recordCopy = crud.copyForWrite(record); + recordCopy.init(parentAcl, aclPermissionFactory, permissionGrantingStrategy); - aclMaps.put(oid, new MutableAclRecord(record)); + aclMaps.put(oid, new MutableAclRecord(recordCopy)); } return aclMaps; }