Netcentric / accesscontroltool

Rights and roles management for AEM made easy
Eclipse Public License 1.0
147 stars 92 forks source link

Excessive usage of memory during saving merged configs #648

Closed otarsko closed 1 year ago

otarsko commented 1 year ago

Storing merged configuration is done via serialization of AcConfiguration with Snakeyaml. With big amount of authorizables this consuming big amount of memory, what can cause OutOfMemory.

Used version of ACTool 3.0.4 image

"[0:0:0:0:0:0:0:1] [1665467894701] POST /mnt/overlay/netcentric/actool/content/overview/content/items/actoolpanel HTTP/1.1-ACTool-Config-Worker" #108 prio=5 os_prio=31 cpu=274178.06ms elapsed=419.03s tid=0x00007faadec6c800 nid=0x28207 runnable  [0x00007000170c2000]
   java.lang.Thread.State: RUNNABLE
        at java.util.HashMap.getNode(java.base@11.0.7/HashMap.java:576)
        at java.util.HashMap.containsKey(java.base@11.0.7/HashMap.java:591)
        at java.util.HashSet.contains(java.base@11.0.7/HashSet.java:204)
        at org.yaml.snakeyaml.serializer.Serializer.serializeNode(Serializer.java:160)
        at org.yaml.snakeyaml.serializer.Serializer.serializeNode(Serializer.java:206)
        at org.yaml.snakeyaml.serializer.Serializer.serializeNode(Serializer.java:206)
        at org.yaml.snakeyaml.serializer.Serializer.serialize(Serializer.java:113)
        at org.yaml.snakeyaml.Yaml.dumpAll(Yaml.java:270)
        at org.yaml.snakeyaml.Yaml.dumpAll(Yaml.java:237)
        at org.yaml.snakeyaml.Yaml.dump(Yaml.java:215)
        at biz.netcentric.cq.tools.actool.configreader.YamlConfigurationMerger.getMergedConfigurations(YamlConfigurationMerger.java:228)
        at biz.netcentric.cq.tools.actool.impl.AcInstallationServiceImpl.installConfigurationFiles(AcInstallationServiceImpl.java:286)