Jira Server or Data Center logs spammed with java.lang.NoSuchMethodError: 'void org.ofbiz.core.entity.jdbc.SQLProcessor.prepareStatement(java.lang.String)' error
Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Summary
In the application-jira.log, Jira is getting spam with the following error message:
2023-07-27 09:33:23,873+0200 automation-rule-executor:thread-6 ERROR xxxxx [c.a.j.e.charting.field.AbstractSingleDateDAO] java.lang.NoSuchMethodError: 'void org.ofbiz.core.entity.jdbc.SQLProcessor.prepareStatement(java.lang.String)'
java.lang.NoSuchMethodError: 'void org.ofbiz.core.entity.jdbc.SQLProcessor.prepareStatement(java.lang.String)'
at com.atlassian.jira.ext.charting.field.AbstractSingleDateDAO.calculateDate(AbstractSingleDateDAO.java:54)
at com.atlassian.jira.ext.charting.field.DateOfFirstResponseCFType.calculateFirstResponseDate(DateOfFirstResponseCFType.java:77)
at com.atlassian.jira.ext.charting.field.DateOfFirstResponseCFType.getJsonFromIssue(DateOfFirstResponseCFType.java:93)
at com.atlassian.jira.issue.fields.ImmutableCustomField.getJsonFromIssue(ImmutableCustomField.java:1896)
at com.atlassian.jira.rest.v2.issue.IssueBeanBuilder2.getRepresentationForFields(IssueBeanBuilder2.java:245)
at com.atlassian.jira.rest.v2.issue.IssueBeanBuilder2.lambda$createFieldsDataFromOrderable$3(IssueBeanBuilder2.java:232)
at io.atlassian.fugue.Iterables$CollectingIterable$Iter.computeNext(Iterables.java:604)
at io.atlassian.fugue.Iterators$Abstract.tryToComputeNext(Iterators.java:284)
at io.atlassian.fugue.Iterators$Abstract.hasNext(Iterators.java:278)
at com.google.common.collect.Iterators.addAll(Iterators.java:366)
at com.google.common.collect.Lists.newArrayList(Lists.java:147)
at com.google.common.collect.Lists.newArrayList(Lists.java:133)
at com.atlassian.jira.rest.v2.issue.IssueBeanBuilder2.createFieldsData(IssueBeanBuilder2.java:201)
at com.atlassian.jira.rest.v2.issue.IssueBeanBuilder2.build(IssueBeanBuilder2.java:145)
at com.atlassian.jira.rest.v2.issue.IssueBeanBuilder.build(IssueBeanBuilder.java:63)
at com.codebarrel.jira.transform.IssueBeanTransformer.toJiraIssueBean(IssueBeanTransformer.java:136)
at com.codebarrel.jira.transform.IssueBeanTransformer.toIssue(IssueBeanTransformer.java:117)
at com.codebarrel.jira.transform.IssueBeanTransformer.apply(IssueBeanTransformer.java:111)
at com.codebarrel.jira.transform.IssueBeanTransformer.apply(IssueBeanTransformer.java:107)
at com.codebarrel.jira.transform.IssueBeanTransformer.apply(IssueBeanTransformer.java:57)
Environment
Jira Sofware Data Center 9.8.1
Diagnosis
Run the unix command to search how many errors were spamming per log:
grep -i "void org.ofbiz.core.entity.jdbc.SQLProcessor.prepareStatement" $JIRA-HOME/log/atlassian-jira.log* -wc
Example output:
atlassian-jira.log:4382
atlassian-jira.log.1:4382
atlassian-jira.log.10:4382
atlassian-jira.log.2:4778
atlassian-jira.log.3:4596
atlassian-jira.log.4:5110
atlassian-jira.log.5:3938
atlassian-jira.log.6:3838
atlassian-jira.log.7:4300
atlassian-jira.log.8:4270
atlassian-jira.log.9:3936
- Check if you have Jira Charting plugin installed via Manage Apps page. If yes, you can see UPM flag the plugin status as NOT DATA CENTER APPROVED according to Check if an app has a Data Center version link.
Cause
Most of the source errors were coming from the Jira Charting Plugin method (c.a.j.e.charting.field.AbstractSingleDateDAO). Prior to version 4.0.1, this plugin was unsafe for use in Data Center environments as it could cause a deadlock in the database when multiple nodes attempted to update custom field values at the same time:
Solution
Update the Jira Charting Plugin to version 4.0.1 or later (note that this requires Jira 9.6.0 or later). If this isn't possible, disable the Jira Charting plugin and run the same unix command again the following day to validate the spamming errors.