Repeating java.lang.StringIndexOutOfBoundsException errors in Jira application logs after a refresh or DB restore
Platform Notice: Data Center Only - This article only applies to Atlassian apps on the Data Center platform.
Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. 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
There are cases where a Jira instance's application logs get flooded with StringIndexOutOfBoundsException errors after a refresh or database restore (from production to non-production).
These errors show up repeatedly in the logs when performing certain Jira actions such as accessing the dashboard. These messages generally have no visible impact on the UI.
Diagnosis
There are scenarios when the error appears in pairs, with sample stacks below:
<timestamp> <thread> ERROR [o.a.c.c.C.[.[localhost].[/].[default]] Servlet.service() for servlet [default] in context with path [] threw exception
java.lang.StringIndexOutOfBoundsException: begin 27, end 22, length 40
at java.base/java.lang.String.checkBoundsBeginEnd(String.java:3319)
at java.base/java.lang.String.substring(String.java:1874)
at com.atlassian.jira.plugin.webwork.ActionNameCleaner.getActionLastUrlSegment(ActionNameCleaner.java:33)
at com.atlassian.jira.plugin.webwork.WebworkPluginSecurityServiceHelper.getRequiredRoles(WebworkPluginSecurityServiceHelper.java:128)
at com.atlassian.jira.security.auth.AuthorisationManagerImpl.getRequiredRoles(AuthorisationManagerImpl.java:95)
at com.atlassian.jira.security.login.LoginManagerImpl.getRequiredRoles(LoginManagerImpl.java:158)
at com.atlassian.jira.plugin.webwork.JiraSeraphSecurityService.lambda$getRequiredRoles$0(JiraSeraphSecurityService.java:43)
...
at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.lambda$invokeFilterChain$0(CustomerContextSettingFilter.java:220)
at com.atlassian.servicedesk.internal.api.util.context.ReentrantThreadLocalBasedCodeContext.rteInvoke(ReentrantThreadLocalBasedCodeContext.java:136)
at com.atlassian.servicedesk.internal.api.util.context.ReentrantThreadLocalBasedCodeContext.runOutOfContext(ReentrantThreadLocalBasedCodeContext.java:89)
at com.atlassian.servicedesk.internal.utils.context.CustomerContextServiceImpl.runOutOfCustomerContext(CustomerContextServiceImpl.java:47)
at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.outOfCustomerContext(CustomerContextSettingFilter.java:211)
at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilterImpl(CustomerContextSettingFilter.java:139)
at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilter(CustomerContextSettingFilter.java:128)
...<timestamp> <thread> ERROR - [c.a.j.web.servlet.InternalServerErrorServlet] {errorId=2c5c6af1-4b42-428e-8726-24c083d4ca8d, interpretedMsg=, cause=java.lang.StringIndexOutOfBoundsException: begin 27, end 22, length 40, stacktrace=java.lang.StringIndexOutOfBoundsException: begin 27, end 22, length 40
at java.base/java.lang.String.checkBoundsBeginEnd(String.java:3319) [?:?]
at java.base/java.lang.String.substring(String.java:1874) [?:?]
at com.atlassian.jira.plugin.webwork.ActionNameCleaner.getActionLastUrlSegment(ActionNameCleaner.java:33) [classes/:?]
at com.atlassian.jira.plugin.webwork.WebworkPluginSecurityServiceHelper.getRequiredRoles(WebworkPluginSecurityServiceHelper.java:128) [classes/:?]
at com.atlassian.jira.security.auth.AuthorisationManagerImpl.getRequiredRoles(AuthorisationManagerImpl.java:95) [classes/:?]
at com.atlassian.jira.security.login.LoginManagerImpl.getRequiredRoles(LoginManagerImpl.java:158) [classes/:?]
at com.atlassian.jira.plugin.webwork.JiraSeraphSecurityService.lambda$getRequiredRoles$0(JiraSeraphSecurityService.java:43) [classes/:?]
at java.base/java.util.Optional.map(Optional.java:265) [?:?]
at com.atlassian.jira.plugin.webwork.JiraSeraphSecurityService.getRequiredRoles(JiraSeraphSecurityService.java:43) [classes/:?]
at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:125) [atlassian-seraph-4.1.4.jar:?]
at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:64) [classes/:?]
...
, referer=Unknown, servletErrorMessage=}The matching access logs also have matching dashboard REST requests from an external IP address.
<externalIP> <sessionid> - [<timestamp>] "GET /secure/Dashboard.jspa/rest/capabilities- HTTP/1.1" 500 2278 131 "-" "JIRA-8.20.10 (820010)" "-"
<externalIP> <sessionid> - [<timestamp>] "GET /secure/Dashboard.jspa/rest/capabilities- HTTP/1.1" 500 2278 187 "-" "JIRA-8.20.10 (820010)" "-"
<externalIP> <sessionid> - [<timestamp>] "GET /secure/Dashboard.jspa/rest/capabilities- HTTP/1.1" 500 2278 128 "-" "JIRA-8.20.10 (820010)" "-"
<externalIP> <sessionid> - [<timestamp>] "GET /secure/Dashboard.jspa/rest/capabilities- HTTP/1.1" 500 2278 128 "-" "JIRA-8.20.10 (820010)" "-"
<externalIP> <sessionid> - [<timestamp>] "GET /secure/Dashboard.jspa/rest/capabilities- HTTP/1.1" 500 2278 128 "-" "JIRA-8.20.10 (820010)" "-"Cause
External Jira instances with broken application links pointing to the affected node can cause these errors to keep appearing in the application logs.
Solution
Re-create the application link from the external Jira instance. Please check the link documentation on Link to other applications on how to carry this out.
Was this helpful?