Uploaded image for project: 'Magnolia UI'
  1. Magnolia UI
  2. MGNLUI-7749

Reduce grid refresh rate

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: High High
    • 6.2.29
    • 6.2.27
    • None

      Steps to reproduce

      1. http://localhost:8080/magnoliaAuthor/.magnolia/admincentral#app:groovy:detail;/untitled:edit
      2. Paste the content of attached script extensiveUiRreshes.groovy
      3. Click run
      4. Open http://localhost:8080/magnoliaAuthor/.magnolia/admincentral#app:pages-app:browser in multiple browser tabs

      Expected results

      UI is still usable.

      Actual results

      Server under huge stress, user can't interact with UI, stackoverflow in logs.

      Development notes

      When lot's of users are working in the same app/workspace the grid refresh can become overwhelmed with requests. This can lead to a stack overflow.

      2023-01-17 10:35:21,782 ERROR nfo.magnolia.admincentral.AdmincentralErrorHandler: Admincentral ist auf einen unerwarteten Fehler gestoßen.
      java.util.concurrent.ExecutionException: java.lang.StackOverflowError
      	at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_77]
      	at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_77]
      	at com.vaadin.server.VaadinSession$FutureAccess.get(VaadinSession.java:114) ~[vaadin-server-8.15.2.jar:8.15.2]
      	at com.vaadin.server.VaadinService.runPendingAccessTasks(VaadinService.java:2098) ~[vaadin-server-8.15.2.jar:8.15.2]
      	at com.vaadin.ui.UI.push(UI.java:1701) ~[vaadin-server-8.15.2.jar:8.15.2]
      	at info.magnolia.admincentral.ResurfaceUI.push(ResurfaceUI.java:125) ~[magnolia-admincentral-6.2.23.jar:?]
      	at info.magnolia.ui.contentapp.observation.JcrDataSourceObservation.lambda$null$0(JcrDataSourceObservation.java:80) ~[magnolia-ui-framework-jcr-6.2.25.jar:?]
      	at info.magnolia.admincentral.ResurfaceUI.lambda$accessSynchronously$2(ResurfaceUI.java:141) ~[magnolia-admincentral-6.2.23.jar:?]
      	at com.vaadin.ui.UI.accessSynchronously(UI.java:1511) ~[vaadin-server-8.15.2.jar:8.15.2]
      	at info.magnolia.admincentral.ResurfaceUI.accessSynchronously(ResurfaceUI.java:131) ~[magnolia-admincentral-6.2.23.jar:?]
      	at com.vaadin.ui.UI$3.run(UI.java:1575) ~[vaadin-server-8.15.2.jar:8.15.2]
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_77]
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_77]
      	at com.vaadin.server.VaadinService.runPendingAccessTasks(VaadinService.java:2095) ~[vaadin-server-8.15.2.jar:8.15.2]
      ... 
      ...
      ...
      Caused by: java.lang.StackOverflowError
      	at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:187) ~[mysql-connector-java-5.1.30.jar:?]
      	at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3158) ~[mysql-connector-java-5.1.30.jar:?]
      	at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3615) ~[mysql-connector-java-5.1.30.jar:?]
      	at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3604) ~[mysql-connector-java-5.1.30.jar:?]
      	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4155) ~[mysql-connector-java-5.1.30.jar:?]
      	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:926) ~[mysql-connector-java-5.1.30.jar:?]
      	at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:2051) ~[mysql-connector-java-5.1.30.jar:?]
      	at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:3538) ~[mysql-connector-java-5.1.30.jar:?]
      	at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:489) ~[mysql-connector-java-5.1.30.jar:?]
      	at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:3240) ~[mysql-connector-java-5.1.30.jar:?]
      	at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:2411) ~[mysql-connector-java-5.1.30.jar:?]
      	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2834) ~[mysql-connector-java-5.1.30.jar:?]
      	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2838) ~[mysql-connector-java-5.1.30.jar:?]
      	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2082) ~[mysql-connector-java-5.1.30.jar:?]
      	at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1307) ~[mysql-connector-java-5.1.30.jar:?]
      	at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:172) ~[commons-dbcp-1.4.jar:1.4]
      	at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:172) ~[commons-dbcp-1.4.jar:1.4]
      	at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:172) ~[commons-dbcp-1.4.jar:1.4]
      	at org.apache.jackrabbit.core.util.db.ConnectionHelper.execute(ConnectionHelper.java:524) ~[jackrabbit-data-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.util.db.ConnectionHelper.reallyExec(ConnectionHelper.java:411) ~[jackrabbit-data-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.util.db.ConnectionHelper$3.call(ConnectionHelper.java:385) ~[jackrabbit-data-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.util.db.ConnectionHelper$3.call(ConnectionHelper.java:381) ~[jackrabbit-data-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.util.db.ConnectionHelper$RetryManager.doTry(ConnectionHelper.java:552) ~[jackrabbit-data-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.util.db.ConnectionHelper.exec(ConnectionHelper.java:388) ~[jackrabbit-data-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.persistence.pool.BundleDbPersistenceManager.loadBundle(BundleDbPersistenceManager.java:886) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.getBundleCacheMiss(AbstractBundlePersistenceManager.java:766) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.getBundle(AbstractBundlePersistenceManager.java:750) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.load(AbstractBundlePersistenceManager.java:490) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.state.SharedItemStateManager.loadItemState(SharedItemStateManager.java:1878) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.state.SharedItemStateManager.getNonVirtualItemState(SharedItemStateManager.java:1798) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.state.SharedItemStateManager.getItemState(SharedItemStateManager.java:271) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.state.LocalItemStateManager.getNodeState(LocalItemStateManager.java:110) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.state.LocalItemStateManager.getItemState(LocalItemStateManager.java:175) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.state.SessionItemStateManager.getItemState(SessionItemStateManager.java:161) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.HierarchyManagerImpl.getItemState(HierarchyManagerImpl.java:154) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.HierarchyManagerImpl.buildPath(HierarchyManagerImpl.java:285) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.CachingHierarchyManager.buildPath(CachingHierarchyManager.java:232) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.HierarchyManagerImpl.buildPath(HierarchyManagerImpl.java:287) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.CachingHierarchyManager.buildPath(CachingHierarchyManager.java:232) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.HierarchyManagerImpl.buildPath(HierarchyManagerImpl.java:287) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.CachingHierarchyManager.buildPath(CachingHierarchyManager.java:232) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.HierarchyManagerImpl.buildPath(HierarchyManagerImpl.java:287) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.CachingHierarchyManager.buildPath(CachingHierarchyManager.java:232) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.HierarchyManagerImpl.buildPath(HierarchyManagerImpl.java:287) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.CachingHierarchyManager.buildPath(CachingHierarchyManager.java:232) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.HierarchyManagerImpl.buildPath(HierarchyManagerImpl.java:287) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.CachingHierarchyManager.buildPath(CachingHierarchyManager.java:232) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.HierarchyManagerImpl.getPath(HierarchyManagerImpl.java:402) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.CachingHierarchyManager.getPath(CachingHierarchyManager.java:266) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at info.magnolia.cms.core.DefaultACLBasedPermissions.canRead(DefaultACLBasedPermissions.java:135) ~[magnolia-core-6.2.25.jar:?]
      	at org.apache.jackrabbit.core.security.DefaultAccessManager.canRead(DefaultAccessManager.java:265) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.ItemManager.canRead(ItemManager.java:437) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.ItemManager.createItemData(ItemManager.java:847) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.ItemManager.getItemData(ItemManager.java:391) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:328) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:621) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.SessionImpl.getNodeById(SessionImpl.java:538) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.query.lucene.LuceneQueryFactory.execute(LuceneQueryFactory.java:229) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.query.lucene.join.QueryEngine.execute(QueryEngine.java:465) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.query.lucene.join.QueryEngine.execute(QueryEngine.java:126) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.query.lucene.join.QueryEngine.execute(QueryEngine.java:115) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.query.QueryObjectModelImpl$2.perform(QueryObjectModelImpl.java:129) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.query.QueryObjectModelImpl$2.perform(QueryObjectModelImpl.java:124) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at org.apache.jackrabbit.core.query.QueryObjectModelImpl.execute(QueryObjectModelImpl.java:123) ~[jackrabbit-core-2.20.6.jar:2.20.6]
      	at info.magnolia.ui.contentapp.JcrDataProvider.fetchFromBackEnd(JcrDataProvider.java:87) ~[magnolia-ui-framework-jcr-6.2.25.jar:?]
      	at info.magnolia.ui.contentapp.JcrDataProvider.sizeInBackEnd(JcrDataProvider.java:103) ~[magnolia-ui-framework-jcr-6.2.25.jar:?]
      	at com.vaadin.data.provider.AbstractBackEndDataProvider.size(AbstractBackEndDataProvider.java:66) ~[vaadin-server-8.15.2.jar:8.15.2]
      	at com.vaadin.data.provider.DataProviderWrapper.size(DataProviderWrapper.java:85) ~[vaadin-server-8.15.2.jar:8.15.2]
      	at com.vaadin.data.provider.DataCommunicator.getDataProviderSize(DataCommunicator.java:840) ~[vaadin-server-8.15.2.jar:8.15.2]
      	at com.vaadin.data.provider.DataCommunicator.sendDataToClient(DataCommunicator.java:384) ~[vaadin-server-8.15.2.jar:8.15.2]
      	at com.vaadin.data.provider.DataCommunicator.beforeClientResponse(DataCommunicator.java:364) ~[vaadin-server-8.15.2.jar:8.15.2]
      	at com.vaadin.server.communication.UidlWriter.write(UidlWriter.java:126) ~[vaadin-server-8.15.2.jar:8.15.2]
      	at com.vaadin.server.communication.AtmospherePushConnection.push(AtmospherePushConnection.java:168) ~[vaadin-server-8.15.2.jar:8.15.2]
      	at com.vaadin.server.communication.AtmospherePushConnection.push(AtmospherePushConnection.java:146) ~[vaadin-server-8.15.2.jar:8.15.2]
      	at com.vaadin.ui.UI.push(UI.java:1708) ~[vaadin-server-8.15.2.jar:8.15.2]
      	at info.magnolia.admincentral.ResurfaceUI.push(ResurfaceUI.java:125) ~[magnolia-admincentral-6.2.23.jar:?]
      	at info.magnolia.ui.contentapp.observation.JcrDataSourceObservation.lambda$null$0(JcrDataSourceObservation.java:80) ~[magnolia-ui-framework-jcr-6.2.25.jar:?]
      	at info.magnolia.admincentral.ResurfaceUI.lambda$accessSynchronously$2(ResurfaceUI.java:141) ~[magnolia-admincentral-6.2.23.jar:?]
      	at com.vaadin.ui.UI.accessSynchronously(UI.java:1511) ~[vaadin-server-8.15.2.jar:8.15.2]
      	at info.magnolia.admincentral.ResurfaceUI.accessSynchronously(ResurfaceUI.java:131) ~[magnolia-admincentral-6.2.23.jar:?]
      	at com.vaadin.ui.UI$3.run(UI.java:1575) ~[vaadin-server-8.15.2.jar:8.15.2]
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_77]
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_77]
      

      Notes
      Refresh more intelligently: the first time react immediately, but over time under stress refresh less frequently (e.g. once in 5 seconds)

        Acceptance criteria

              sang.ngo Sang Ngo Huu
              rgange Richard Gange
              Nucleus
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved:
                Work Started:

                  Bug DoR
                  Task DoD

                    Estimated:
                    Original Estimate - Not Specified
                    Not Specified
                    Remaining:
                    Remaining Estimate - Not Specified
                    Not Specified
                    Logged:
                    Time Spent - 0.75d
                    0.75d