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

ConcurrentModificationException with Asset Publisher

    Details

      Description

      Possible reproduction steps:

      (The below steps help to see the issue only sometimes.)

      1. Get clean Liferay 6.2 EE installation with Kaleo portlets (they are needed to get a specific role) with SP14 installed
      2. Have an empty MySQL DB, portal.ext-properties:

      jdbc.default.driverClassName=com.mysql.jdbc.Driver
      jdbc.default.url=jdbc:mysql://localhost/yourDB?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
      jdbc.default.username=changeme
      jdbc.default.password=changeme
      
      company.security.auth.type=screenName
      
      auth.token.check.enabled=false
      
      terms.of.use.required=false
      users.reminder.queries.enabled=false
      users.reminder.queries.custom.question.enabled=false
      setup.wizard.enabled=false
      passwords.default.policy.change.required=false
      database.indexes.update.on.startup=true
      

      3. Login with Admin
      4. Create two users: user1, user2 - both with password "test"
      5. Go to site administration for "Liferay" > Users > Site Memberships
      6. Tab "Users": Assign Users: Assign user2
      7. "Assign Site Roles" for user2: "Site Administrator" and "Site Content Reviewer"
      8. Add 4 (default) Asset Publisher to the welcome page
      9. Add 4 web contents to "Liferay" site
      10. Remove all Guest View permissions for 2 two of them
      11. Create heavy load with logged users (e.g. with jmeter)
      12. Login with user2 from a remote machine

      Result:

      ERROR [RuntimePageImpl-7][SearchPermissionCheckerImpl:132] java.util.ConcurrentModificationException
      java.util.ConcurrentModificationException
              at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859)
              at java.util.ArrayList$Itr.remove(ArrayList.java:845)
              at com.liferay.portal.search.SearchPermissionCheckerImpl.doGetPermissionQuery(SearchPermissionCheckerImpl.java:316)
              at com.liferay.portal.search.SearchPermissionCheckerImpl.getPermissionQuery(SearchPermissionCheckerImpl.java:128)
              at com.liferay.portal.kernel.search.BaseIndexer.getFacetQuery(BaseIndexer.java:228)
              at com.liferay.portal.kernel.search.facet.AssetEntriesFacet.doGetFacetClause(AssetEntriesFacet.java:80)
              at com.liferay.portal.kernel.search.facet.BaseFacet.getFacetClause(BaseFacet.java:37)
              at com.liferay.portal.kernel.search.BaseIndexer.createFullQuery(BaseIndexer.java:1278)
              at com.liferay.portal.kernel.search.BaseIndexer.getFullQuery(BaseIndexer.java:278)
              at com.liferay.portal.kernel.search.BaseIndexer.doSearch(BaseIndexer.java:1418)
              at com.liferay.portal.kernel.search.DefaultSearchResultPermissionFilter.getHits(DefaultSearchResultPermissionFilter.java:75)
              at com.liferay.portal.kernel.search.BaseSearchResultPermissionFilter.search(BaseSearchResultPermissionFilter.java:76)
              at com.liferay.portal.kernel.search.BaseIndexer.search(BaseIndexer.java:582)
              at com.liferay.portlet.asset.util.AssetUtil.search(AssetUtil.java:728)
              at com.liferay.portlet.asset.util.AssetUtil.search(AssetUtil.java:657)
              at org.apache.jsp.html.portlet.asset_005fpublisher.view_jsp._jspService(view_jsp.java:2090)
              at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
      

      and

      13:03:34,236 ERROR [RuntimePageImpl-2][IncludeTag:129] Current URL null generates exception: java.lang.IllegalStateException: Page needs a session and none is available
      java.lang.IllegalStateException: Page needs a session and none is available
              at org.apache.jasper.runtime.PageContextImpl._initialize(PageContextImpl.java:148)
              at org.apache.jasper.runtime.PageContextImpl.initialize(PageContextImpl.java:125)
              at org.apache.jasper.runtime.JspFactoryImpl.internalGetPageContext(JspFactoryImpl.java:112)
              at org.apache.jasper.runtime.JspFactoryImpl.getPageContext(JspFactoryImpl.java:65)
      ...
      

      will appear and the user will be logged out.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              hong.zhao Hong Zhao (Inactive)
              Reporter:
              sherly.liu Sherly Liu (Inactive)
              Participants of an Issue:
              Recent user:
              Esther Sanz
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:
                Days since last comment:
                5 years, 15 weeks ago

                  Packages

                  Version Package
                  6.2.X EE