Index: server-base/src/main/java/org/apache/kylin/rest/service/AclService.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- server-base/src/main/java/org/apache/kylin/rest/service/AclService.java (revision 1d30a77ecbd0cce6189775d1f36a74c3c0001494) +++ server-base/src/main/java/org/apache/kylin/rest/service/AclService.java (revision ) @@ -289,10 +289,6 @@ try { htable = aclHBaseStorage.getTable(aclTableName); - Delete delete = new Delete(Bytes.toBytes(String.valueOf(acl.getObjectIdentity().getIdentifier()))); - delete.deleteFamily(Bytes.toBytes(AclHBaseStorage.ACL_ACES_FAMILY)); - htable.delete(delete); - Put put = new Put(Bytes.toBytes(String.valueOf(acl.getObjectIdentity().getIdentifier()))); if (null != acl.getParentAcl()) { @@ -310,6 +306,10 @@ AceInfo aceInfo = new AceInfo(ace); put.addColumn(Bytes.toBytes(AclHBaseStorage.ACL_ACES_FAMILY), Bytes.toBytes(aceInfo.getSidInfo().getSid()), aceSerializer.serialize(aceInfo)); } + //删除旧的数据之前应该先验证新的数据是否正确 + Delete delete = new Delete(Bytes.toBytes(String.valueOf(acl.getObjectIdentity().getIdentifier()))); + delete.deleteFamily(Bytes.toBytes(AclHBaseStorage.ACL_ACES_FAMILY)); + htable.delete(delete); if (!put.isEmpty()) { htable.put(put);