aclOptimization flag

Hi all,

this question is about aclOptimization flag into repository descriptor and trying to know how it works. My current scenario:

  • 2 NX 6.0 instances clustered (over Ubuntu and PostgresSQL with tunning)
  • 12M documents into repository
  • 2 Elastic nodes clustered

So, if we have aclOptimization=true, NX initialization takes about 10-15min, so we have the function nx_update_read_acls running and running into DB. When it is started, Navigation is good (elastic works fine), searchs too, … but for example, the operation for settting or removing permissions into UI or into a Worker (implemented by us) is during about 4h and it ends always with ROLLBACK, so permission management is not possible; also, we can see a lot of call for nx_update_read_acls after, etcetera, … We know the answer, but I don't look for a change in latest versions into Nuxeo github with Postgresql update.

Then, the question is: if we set aclOptimization=false, and having NX starting about 60s and navigation is normal too, managing permission is normally as well, etcetera… What is the real optimization of this aclOptimization? Only cache? If we have a aclOptimization=false, then navigation returns the ContentView documents OK (from elastic), NXQL with Default provider searchs OK and fast, … Also, If we want to activate again the flag to true and execute the nx_rebuild_read_acls function, it runs about 10-20 hours

So, we are considering to disable aclOptimization to work fine, but Nuxeo distribution has aclOptimization=true by default. Is there any possible fix or changes to resolve it for a correct behavior?

Thank you in advance.


3 votes

1 answers



Hi Victor Sánchez

Maybe this link could be helpful to get the info about acl optimization.

Best Regards,

0 votes

Thank you jmnrk.

We know the definitions of flag, but the problem is when it is enabled: we try set permissions and it is not possible, when we restart the instance waiting the flush is a problem in PRO instances (it takes 15'-20')…, when set to true and making a rebuild function, it takes several hours… so we think, given our repository size, the best solution is set it to false. But, we are looking for opinions or solutions.

Regards, VS!