The current code that updates the read acls does a sync to manage serialization.
This sync has a timeout of 2s and the updated readACL is skipped in this case.
// cluster mode. if (repository.updateReadAclsLock.tryLock(2, TimeUnit.SECONDS)) { try { st.execute(sql); } finally { repository.updateReadAclsLock.unlock(); } } else { log.warn("Skipping updateReadAcls after 2s due to lock"); }
This makes sense in most of the cases : since this means that other threads are actually already rebuilding ACLs.
In some case, this assumption is false, and the timeout results in a not up to data ACL.
We should :
- make the Timeout configurable
- send the updateReadAcl is async if timeout is reached.
Tiry
- depends on
-
NXP-14297 Stop using aclOptimizations concurrentUpdate=false
- Resolved