How to Fix Error 500 When Editing Issue Types to Update Icons in Jira
Platform Notice: Data Center Only - This article only applies to Atlassian products 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
Certain issue types are missing the icons. Editing them from the UI gives the error 500.
Diagnosis
Diagnostic Steps
This type of error usually happens because of missing or incorrect data from the database or inside the Avatar's folder.
In order to check the data, collect:
1. Identify which is the avatar used by this Issue type, running the query:
SELECT
*
FROM
issuetype;
The query will return multiple rows. In our sample, the missed icons are for Issue type "Service Request" (id=10301) and "Problem" (id=10300):
id | sequence | pname | pstyle | description | iconurl | avatar |
10301 | Service Request |
|
| Created by Jira Service Desk. | ||
10304 | Problem |
|
| Track underlying causes of incidents. Created by Jira Service Desk. |
| 11704 |
10300 | Incident |
|
| For system outages or incidents. Created by Jira Service Desk. | ||
10215 | Risk/Concern |
|
| Risk and issues/concerns | /secure/viewavatar?size=xsmall&avatarId=10300&avatarType=issuetype | 10308 |
Where:
"id" is the issue type id
"avatar" is the avatar id
2. Check if there is an avatar saved for this issuetype, running the query:
select
*
from
avatar
where
avatartype = 'issuetype';
The query will return multiple rows. Observe if there is any row for the owner 10301 (Service Request) or 10300 (Problem):
id | filename | contenttype | avatartype | owner | systemavatar |
11704 | xxxxx.png | image/png | issuetype | 10304 | 0 |
Where :
"id" is the avatar id
"owner" is the issuetype id
3. Check if the file mentioned at the column "filename" exists in the avatar's directory Jira Server: <Jira home directory>/data/avatars Jira Data Center: <Shared home directory>/data/avatars
Cause
Relevant stack trace:
2021-06-02 16:59:59,709-0700 http-nio-8080-exec-1 ERROR xxxxx 1019x4833664x1 /secure/admin/EditIssueType!default.jspa [o.a.c.c.C.[Catalina].[localhost].[/]] Unhandled exception occurred whilst decorating page
com.google.template.soy.tofu.SoyTofuException: When evaluating "$issueType.iconUrlContent": Failed to invoke accessor getIconUrlContent on instance of class com.atlassian.jira.web.action.admin.issuetypes.EditIssueType$IssueTypeViewData
at JIRA.Templates.IssueType.form(issueType.soy:78)
at JIRA.Templates.IssueType.editIssueType(issueType.soy:25)
at com.google.template.soy.tofu.internal.BaseTofu.renderMainHelper(BaseTofu.java:369)
at com.google.template.soy.tofu.internal.BaseTofu.renderMain(BaseTofu.java:322)
at com.google.template.soy.tofu.internal.BaseTofu.access$100(BaseTofu.java:66)
at com.google.template.soy.tofu.internal.BaseTofu$RendererImpl.render(BaseTofu.java:476)
at com.atlassian.soy.impl.DefaultSoyManager.render(DefaultSoyManager.java:154)
at com.atlassian.soy.impl.DefaultSoyTemplateRenderer.render(DefaultSoyTemplateRenderer.java:45)
at com.atlassian.soy.impl.DefaultSoyTemplateRenderer.render(DefaultSoyTemplateRenderer.java:39)
... 5 filtered
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
... 48 filtered
at com.atlassian.servicedesk.internal.web.ExternalCustomerLockoutFilter.doFilter(ExternalCustomerLockoutFilter.java:55)
... 4 filtered
at com.atlassian.greenhopper.jira.filters.ClassicBoardRouter.doFilter(ClassicBoardRouter.java:56)
... 7 filtered
at com.atlassian.jira.plugin.mobile.web.filter.MobileAppRequestFilter.doFilter(MobileAppRequestFilter.java:59)
... 4 filtered
at com.atlassian.jira.plugin.mobile.login.MobileLoginSuccessFilter.doFilter(MobileLoginSuccessFilter.java:54)
... 3 filtered
at com.atlassian.diagnostics.internal.platform.monitor.http.HttpRequestMonitoringFilter.doFilter(HttpRequestMonitoringFilter.java:55)
... 8 filtered
at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21)
... 48 filtered
at com.bigbrassband.jira.git.action.GitThreadCacheDestroyFilter.doFilter(GitThreadCacheDestroyFilter.java:35)
... 3 filtered
at com.atlassian.plugins.slack.analytics.SlackAnalyticsFilter.doFilter(SlackAnalyticsFilter.java:35)
... 3 filtered
at com.atlassian.troubleshooting.thready.filter.AbstractThreadNamingFilter.doFilter(AbstractThreadNamingFilter.java:46)
... 21 filtered
at com.atlassian.jira.security.JiraSecurityFilter.lambda$doFilter$0(JiraSecurityFilter.java:66)
... 1 filtered
at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:64)
... 39 filtered
at com.atlassian.jira.servermetrics.CorrelationIdPopulatorFilter.doFilter(CorrelationIdPopulatorFilter.java:30)
... 5 filtered
at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.lambda$invokeFilterChain$0(CustomerContextSettingFilter.java:215)
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:206)
at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilterImpl(CustomerContextSettingFilter.java:134)
at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilter(CustomerContextSettingFilter.java:123)
... 4 filtered
at com.atlassian.jwt.internal.servlet.JwtAuthFilter.doFilter(JwtAuthFilter.java:37)
... 8 filtered
at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21)
... 4 filtered
at com.atlassian.troubleshooting.thready.filter.AbstractThreadNamingFilter.doFilter(AbstractThreadNamingFilter.java:46)
... 3 filtered
at com.atlassian.web.servlet.plugin.LocationCleanerFilter.doFilter(LocationCleanerFilter.java:36)
... 29 filtered
at com.atlassian.jira.servermetrics.MetricsCollectorFilter.doFilter(MetricsCollectorFilter.java:25)
... 25 filtered
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.google.template.soy.sharedpasses.render.RenderException: When evaluating "$issueType.iconUrlContent": Failed to invoke accessor getIconUrlContent on instance of class com.atlassian.jira.web.action.admin.issuetypes.EditIssueType$IssueTypeViewData
Solution
Always back up your data before performing any modifications to the database. If possible, test any alter, insert, update, or delete SQL commands on a staging server first.
Stop Jira;
Backup your Database;
From the previous query, select one icon to be used as a temporary icon, for instance, the iconurl used by the "Risk/Concern" issue type ('/secure/viewavatar?size=xsmall&avatarId=10300&avatarType=issuetype');
Run these UPDATE statements to assign an icon URL to the affected issue types (in our sample, 10301 (Service Request) and 10300 (Problem):
UPDATE issuetype SET iconurl= '/secure/viewavatar?size=xsmall&avatarId=10300&avatarType=issuetype' WHERE id='10300'; UPDATE issuetype SET iconurl= '/secure/viewavatar?size=xsmall&avatarId=10300&avatarType=issuetype' WHERE id='10301';
Start Jira;
Navigate to Issues > Issue Types;
Click on Edit in any of the affected issues;
Select another icon for the Issue Type or browse to find another image.
Was this helpful?