Artifactory permissions are stored in Access and cached in memory. On permission create/delete/update operation, the cache is being revoked, and on demand request triggers the cache loading. On environment that has large amount of permissions / permission data, fetching the data and cache might take time.
Artifactory mechanism lock the cache update to a single thread, therefore, if a permission change occurs and multiple threads are trying to fetch/use the permission data, single thread will update the cache synchronously and the rest of the threads will wait 20 seconds (default, configurable via artifactory.acl.dirty.read.timeout). If the timeout passes, the waiting threads will get old copy of the cache until the cache update will be completed.
When the artifactory.acl.dirty.read.timeout value is configured to a small value, the might return faster, however, after every permission change, there will always be a single thread that synchronously waiting until the cache is fully updated
New functionality introduced, allowing all threads to immediately return with the current permissions cache while the cache update is done in the background and not in by the first request thread that is trying to use permissions data.
To enable this, add the following to the artifactory.system.properties file: