Uploaded image for project: 'PUBLIC - Liferay Portal Community Edition'
  1. PUBLIC - Liferay Portal Community Edition
  2. LPS-73258

Poor Performance/Potential OutOfMemoryError in JournalContentSearchLocalServiceImpl#checkContentSearches



      The JournalContentSearchLocalServiceImpl#checkContentSearches method has this line, which fetches every group in the portal instance into one List. For a small test instance this may be acceptable, but for a production size instance with potentially millions of groups, this is unacceptable as the List will take up a huge amount of memory and cause performance issues.

      It gets even worse later on in the method because we create another List of every Layout associated with each of those groups. This is going to be another exceptionally large list on a production instance of Liferay portal.

      In cases like these where we're going to fetch a large amount of objects into a single List, we should use ActionableDynamicQuery instead.

      Steps to Reproduce
      1. Start up an instance of Liferay portal.
      2. Navigate to Control Panel > Configuration > System Settings > Web Content.
      3. Check the box that says "Sync content search on startup" and click save.
      4. Add many sites and pages to your portal (adding 1,000,000 sites each with a page is probably sufficient if you're using a 1 GB JVM).
      5. Shut down the portal.
      6. Start up the portal

      Expected behavior: The portal starts up cleanly with no errors
      Actual behavior: The portal gets an OutOfMemoryError on startup


          Issue Links



              • Votes:
                1 Vote for this issue
                4 Start watching this issue


                • Created:
                  Days since last comment:
                  25 weeks ago


                  Version Package
                  7.0.X EE