Bulk issue move operations are slow and performance is degraded

XMLWordPrintable

    • 10.03
    • 84
    • Severity 2 - Major
    • 255

      Summary

      In JRASERVER-68806 we decreased the size of the EagerLoadingOfBizCustomFieldPersister cache from infinite to 10.The issue was resolved in JRASERVER-70397. However, we still see the same pattern in new versions of Jira. 

      Expected Results

      • Bulk issue operations are fast
      • DB is not overloaded with requests

      Actual Results

      • bulk issue operations are slow
      • Large number of SQL operations querying customfieldvalue table, the same behavior as the other bug ticket. 
        SELECT ID, ISSUE, CUSTOMFIELD, UPDATED, PARENTKEY, STRINGVALUE, NUMBERVALUE, TEXTVALUE, DATEVALUE, VALUETYPE FROM customfieldvalue WHERE ISSUE='<ID>' 

      Notes

      Example of thread doing BulkMigrateOperation : 

      sun.nio.ch.Net.poll(java.base@17.0.18/Native Method)
      sun.nio.ch.NioSocketImpl.park(java.base@17.0.18/NioSocketImpl.java:186)
      sun.nio.ch.NioSocketImpl.park(java.base@17.0.18/NioSocketImpl.java:195)
      sun.nio.ch.NioSocketImpl.implRead(java.base@17.0.18/NioSocketImpl.java:319)
      sun.nio.ch.NioSocketImpl.read(java.base@17.0.18/NioSocketImpl.java:355)
      sun.nio.ch.NioSocketImpl$1.read(java.base@17.0.18/NioSocketImpl.java:808)
      java.net.Socket$SocketInputStream.read(java.base@17.0.18/Socket.java:966)
      sun.security.ssl.SSLSocketInputRecord.read(java.base@17.0.18/SSLSocketInputRecord.java:484)
      sun.security.ssl.SSLSocketInputRecord.readHeader(java.base@17.0.18/SSLSocketInputRecord.java:478)
      sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket(java.base@17.0.18/SSLSocketInputRecord.java:70)
      sun.security.ssl.SSLSocketImpl.readApplicationRecord(java.base@17.0.18/SSLSocketImpl.java:1465)
      sun.security.ssl.SSLSocketImpl$AppInputStream.read(java.base@17.0.18/SSLSocketImpl.java:1069)
      org.postgresql.core.VisibleBufferedInputStream.readMore(VisibleBufferedInputStream.java:162)
      org.postgresql.core.VisibleBufferedInputStream.ensureBytes(VisibleBufferedInputStream.java:129)
      org.postgresql.core.VisibleBufferedInputStream.ensureBytes(VisibleBufferedInputStream.java:114)
      org.postgresql.core.VisibleBufferedInputStream.read(VisibleBufferedInputStream.java:74)
      org.postgresql.core.PGStream.receiveChar(PGStream.java:467)
      org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2166)
      org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:371)
      org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:502)
      org.postgresql.jdbc.PgStatement.execute(PgStatement.java:419)
      org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:194)
      org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:137)
      org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:123)
      org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:123)
      com.atlassian.jira.ofbiz.sql.PreparedStatementWrapper.executeQuery(PreparedStatementWrapper.java:41)
      com.atlassian.jira.diagnostic.connection.DiagnosticPreparedStatement.lambda$executeQuery$5(DiagnosticPreparedStatement.java:59)
      com.atlassian.jira.diagnostic.connection.DiagnosticPreparedStatement$$Lambda$4118/0x00007fbfa7aaed20.execute(Unknown Source)
      com.atlassian.diagnostics.internal.platform.monitor.db.DefaultDatabaseDiagnosticsCollector.recordExecutionTime(DefaultDatabaseDiagnosticsCollector.java:91)
      com.atlassian.jira.diagnostic.connection.DatabaseDiagnosticsCollectorDelegate.recordExecutionTime(DatabaseDiagnosticsCollectorDelegate.java:62)
      com.atlassian.jira.diagnostic.connection.DiagnosticPreparedStatement.executeQuery(DiagnosticPreparedStatement.java:59)
      org.ofbiz.core.entity.jdbc.SQLProcessor.executeQuery(SQLProcessor.java:543)
      org.ofbiz.core.entity.GenericDAO.createEntityListIterator(GenericDAO.java:882)
      org.ofbiz.core.entity.GenericDAO.selectListIteratorByCondition(GenericDAO.java:862)
      org.ofbiz.core.entity.GenericDAO.selectByAnd(GenericDAO.java:734)
      org.ofbiz.core.entity.GenericHelperDAO.findByAnd(GenericHelperDAO.java:166)
      org.ofbiz.core.entity.GenericDelegator.findByAnd(GenericDelegator.java:913)
      org.ofbiz.core.entity.GenericDelegator.findByAnd(GenericDelegator.java:891)
      org.ofbiz.core.entity.GenericDelegator.findByAnd(GenericDelegator.java:860)
      com.atlassian.jira.ofbiz.DefaultOfBizDelegator.findByAnd(DefaultOfBizDelegator.java:83)
      com.atlassian.jira.ofbiz.WrappingOfBizDelegator.findByAnd(WrappingOfBizDelegator.java:62)
      com.atlassian.jira.issue.customfields.persistence.CustomFieldRetrievalHelper.getValuesOrderedByUpdate(CustomFieldRetrievalHelper.java:20)
      com.atlassian.jira.issue.customfields.persistence.EagerLoadingOfBizCustomFieldPersister.lambda$getValuesForIssueId$1(EagerLoadingOfBizCustomFieldPersister.java:139)
      com.atlassian.jira.issue.customfields.persistence.EagerLoadingOfBizCustomFieldPersister$$Lambda$4666/0x00007fb

      Workaround

      • No workaround available, since the below workaround does not help in this case. 
        -Djira.customfield.values.cache.max.size=1000
        

              Assignee:
              Unassigned
              Reporter:
              Samuel de Azevedo Dias
              Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated: