** Description changed:

  [SRU]
  
  [Impact]
  
-  The use of memory grows as a site conf file enlarges when using augeas.
+  The use of memory grows as a site conf file enlarges when using augeas.
  
  [Test Plan]
  
-   - Copy the attached conf file here to /etc/apache2/sites-available and make 
the site available to apache (a2ensite memorybomb). 
-   - Mime module has to be enabled as well (check it with a2query -m | grep 
mime). If not, enabling it with a2enmod mime. 
-   - Reload apache2 configuration ( systemctl reload apache2 ). If something 
wrong here, maybe a non-graphical web browser like lynx is need to be 
installed. 
-   - Open htop in a different terminal
-   - Run augtool -I httpd.aug
-   - In augtool prompt use: match 
/files/etc/apache2/sites-available/*[label()=~regexp('.*\\.conf')]//*[self::directive=~regexp('([Ii][Nn][Cc][Ll][Uu][Dd][Ee])|([Ii][Nn][Cc][Ll][Uu][Dd][Ee])|([Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Pp][Tt][Ii][Oo][Nn][Aa][Ll])')]
-   - Check in htop that augtool is consuming:
-     - Before fixing the issue: near 2238MB
-     - After fixing the issue (updated packages needed are augeas-lenses, 
augeas-tools ans libaugeas0): near 179 MB
-  
-  PPA with built package with fix for testing: 
ppa:mirespace/sru-lp-1828074-bionic-augeas-large-http-files
+   - Copy the attached conf file here to /etc/apache2/sites-available and make 
the site available to apache (a2ensite memorybomb).
+   - Mime module has to be enabled as well (check it with a2query -m | grep 
mime). If not, enabling it with a2enmod mime.
+   - Reload apache2 configuration ( systemctl reload apache2 ). If something 
wrong here, maybe a non-graphical web browser like lynx is need to be installed.
+   - Open htop in a different terminal
+   - Run augtool -I httpd.aug
+   - In augtool prompt use: match 
/files/etc/apache2/sites-available/*[label()=~regexp('.*\\.conf')]//*[self::directive=~regexp('([Ii][Nn][Cc][Ll][Uu][Dd][Ee])|([Ii][Nn][Cc][Ll][Uu][Dd][Ee])|([Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Pp][Tt][Ii][Oo][Nn][Aa][Ll])')]
+   - Check in htop that augtool is consuming:
+     - Before fixing the issue: near 2238MB
+     - After fixing the issue (updated packages needed are augeas-lenses, 
augeas-tools and libaugeas0): near 179 MB
+ 
+  PPA with built package with fix for testing: ppa:mirespace/sru-
+ lp-1828074-bionic-augeas-large-http-files
  
  [Where problems could occur]
  
-  This patch is cherry picked from upstream, so the bug is corrected in
+  This patch is cherry picked from upstream, so the bug is corrected in
  following augeas package versions.
  
  [Other Info]
  
-  Fixed upstream in version 1.11.0, commit id :
+  Fixed upstream in version 1.11.0, commit id :
  bbf31f719db54916993be9042254f6d77b61cb13
  
-  Commit description: Replace pure function invocations in path
+  Commit description: Replace pure function invocations in path
  expressions with their result.
  
-  In path expressions, we generally need to evaluate functions against 
-  every node that we consider for the result set. For example, in the path
-  expression /files/etc/hosts/*[ipaddr =~ regexp('127\\.')], the regexp
-  function was evaluated against every entry in /etc/hosts. Evaluating that
-  function requires the construction and compilation of a new regexp. 
+  In path expressions, we generally need to evaluate functions against
+  every node that we consider for the result set. For example, in the path
+  expression /files/etc/hosts/*[ipaddr =~ regexp('127\\.')], the regexp
+  function was evaluated against every entry in /etc/hosts. Evaluating that
+  function requires the construction and compilation of a new regexp.
  
- Because  of how memory is managed during evaluation of path expressions, the 
memory  used by all these copies of the same regexp is only freed after we are 
done  evaluating the path expression. This causes unacceptable memory usage in 
large files (see hercules-team#569).
-  
-  To avoid these issues, we now distinguish between pure and impure functions 
in the path expression interpreter. When we encounter a pure function, we 
change the AST for the path expression so that the function invocation is 
replaced with the result of invoking the function. With the example above, that 
means we only construct and compile the regexp '127\\.' once, regardless of how 
many nodes it gets checked against. That leads to a dramatic reduction in the 
memory required to evaluate path expressions with such constructs against large 
files.
-  
-  Fixes hercules-team#569
+ Because  of how memory is managed during evaluation of path expressions,
+ the memory  used by all these copies of the same regexp is only freed
+ after we are done  evaluating the path expression. This causes
+ unacceptable memory usage in large files (see hercules-team#569).
  
-  Bug on upstream: https://github.com/hercules-team/augeas/issues/569
+  To avoid these issues, we now distinguish between pure and impure
+ functions in the path expression interpreter. When we encounter a pure
+ function, we change the AST for the path expression so that the function
+ invocation is replaced with the result of invoking the function. With
+ the example above, that means we only construct and compile the regexp
+ '127\\.' once, regardless of how many nodes it gets checked against.
+ That leads to a dramatic reduction in the memory required to evaluate
+ path expressions with such constructs against large files.
+ 
+  Fixes hercules-team#569
+ 
+  Bug on upstream: https://github.com/hercules-team/augeas/issues/569
  
  [Original Report]
  
  This bug in libaugeas was fixed in version 1.11.0, but is not in the 18.04.2 
repo.
  See: https://github.com/hercules-team/augeas/issues/569
  I found it using certbot and started a bug report there.
  See: https://github.com/certbot/certbot/issues/7035
  Which led me here to see if the newer version could be back-ported.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1828074

Title:
  Memory usage issues with large Apache httpd configuration files

To manage notifications about this bug go to:
https://bugs.launchpad.net/augeas/+bug/1828074/+subscriptions


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to