Details
-
Bug
-
Resolution: Unresolved
-
Low
-
None
-
6.1, 6.2.7, 6.3.4, 6.4, 7.1.2, 7.1.7, 7.3.1, 7.4.1, 7.10.0, 7.12.1, 7.13.8, 8.5.0, 8.13.0
-
6.01
-
87
-
Severity 3 - Minor
-
5
-
Description
NOTE: This bug report is for JIRA Server. Using JIRA Cloud? See the corresponding bug report.
Summary
FieldValidationException on URL custom field with no default value after having a default value.
Environment
- Jira 7.1
- Jira 6.4.7 and 6.4.13
Steps to Reproduce
- Install JIRA 7.1.x using default values.
- Create a new custom field of type URL field.
- Populate the custom field with a default value: https://support.atlassian.com but any link will work.
- Remove the default value by clicking "Edit Default Value, removing the text and then clicking the "Set Default" button.
- Then see this exception in the atlassian-jira.log.
- Click create an issue and see two exceptions in the atlassian-jira.log.
- Finish creating an issue and see two simular exceptions as above in the atlassian-jira.log.
Before adding a default value, there are no rows in genericconfiguration. After adding the value then deleting it, there is a row in my test instance:
10500 | DefaultValue | 10903 | <string></string>
I have confirmed that these steps work to reproduce the issue in JIRA 6.4.7 and 6.4.13 as listed in JRA-35222. The missing step to reproduce this issue in JRA-35222 was to have a value set and then deleted.
This issue has no known issues that it creates. The only affect known at this time is the logs.
Expected Results
I would not expect to have these logs.
Actual Results
The below exception is thrown in the atlassian-jira.log file for step 5:
2016-06-08 14:18:13,738 http-nio-10712-exec-2 ERROR dlaser 858x178x1 8gt7vl 10.0.2.2 /secure/admin/ConfigureCustomField!default.jspa [c.a.j.i.customfields.impl.AbstractSingleFieldType] Incorrect formatted custom field stored as default com.atlassian.jira.issue.customfields.impl.FieldValidationException: Not a valid URL at com.atlassian.jira.issue.customfields.impl.URLCFType.getSingularObjectFromString(URLCFType.java:20) at com.atlassian.jira.issue.customfields.impl.GenericTextCFType.getObjectFromDbValue(GenericTextCFType.java:83) at com.atlassian.jira.issue.customfields.impl.GenericTextCFType.getObjectFromDbValue(GenericTextCFType.java:51) at com.atlassian.jira.issue.customfields.impl.AbstractSingleFieldType.getDefaultValue(AbstractSingleFieldType.java:161) at com.atlassian.jira.plugin.customfield.CustomFieldTypeModuleDescriptorImpl$8.call(CustomFieldTypeModuleDescriptorImpl.java:281) at com.atlassian.jira.plugin.customfield.CustomFieldTypeModuleDescriptorImpl$8.call(CustomFieldTypeModuleDescriptorImpl.java:277) at com.atlassian.ozymandias.SafePluginPointAccess.call(SafePluginPointAccess.java:187) at com.atlassian.jira.plugin.customfield.CustomFieldTypeModuleDescriptorImpl.getSupplierValueOrHtmlErrorMessage(CustomFieldTypeModuleDescriptorImpl.java:372) at com.atlassian.jira.plugin.customfield.CustomFieldTypeModuleDescriptorImpl.getDefaultViewHtml(CustomFieldTypeModuleDescriptorImpl.java:277) at com.atlassian.jira.issue.customfields.config.item.DefaultValueConfigItem.getViewHtml(DefaultValueConfigItem.java:23) at com.atlassian.jira.issue.fields.config.FieldConfigItemImpl.getViewHtml(FieldConfigItemImpl.java:24) ... 3 filtered at java.lang.reflect.Method.invoke(Method.java:497) at webwork.util.InjectionUtils$DefaultInjectionImpl.invoke(InjectionUtils.java:70) at webwork.util.InjectionUtils.invoke(InjectionUtils.java:56) at webwork.util.ValueStack.findValue(ValueStack.java:517) at webwork.util.ValueStack.findValue(ValueStack.java:216) at webwork.view.taglib.WebWorkBodyTagSupport.findValue(WebWorkBodyTagSupport.java:62) at webwork.view.taglib.BasicPropertyTag.doStartTag(BasicPropertyTag.java:54) at jsp.secure.admin.views.customfields.configurecustomfield_jsp._jspx_meth_ww_005fproperty_005f15(configurecustomfield_jsp.java:2521) at jsp.secure.admin.views.customfields.configurecustomfield_jsp._jspx_meth_ww_005fiterator_005f2(configurecustomfield_jsp.java:2005) at jsp.secure.admin.views.customfields.configurecustomfield_jsp._jspx_meth_ww_005fiterator_005f1(configurecustomfield_jsp.java:1953) at jsp.secure.admin.views.customfields.configurecustomfield_jsp._jspx_meth_ww_005fif_005f6(configurecustomfield_jsp.java:1916) at jsp.secure.admin.views.customfields.configurecustomfield_jsp._jspx_meth_page_005fapplyDecorator_005f1(configurecustomfield_jsp.java:1067) at jsp.secure.admin.views.customfields.configurecustomfield_jsp._jspx_meth_ww_005fiterator_005f0(configurecustomfield_jsp.java:974) at jsp.secure.admin.views.customfields.configurecustomfield_jsp._jspx_meth_page_005fapplyDecorator_005f0(configurecustomfield_jsp.java:261) at jsp.secure.admin.views.customfields.configurecustomfield_jsp._jspService(configurecustomfield_jsp.java:112) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) ... 18 filtered at com.atlassian.web.servlet.plugin.LocationCleanerFilter.doFilter(LocationCleanerFilter.java:37) ... 74 filtered at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:70) ... 36 filtered at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) ... 50 filtered at com.atlassian.greenhopper.jira.filters.ClassicBoardRouter.doFilter(ClassicBoardRouter.java:59) ... 66 filtered at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:70) ... 89 filtered at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)
The below exceptions are thrown in the atlassian-jira.log file for step 6 and 7:
2016-06-08 14:18:37,805 http-nio-10712-exec-4 ERROR dlaser 858x197x1 8gt7vl 10.0.2.2 /secure/CreateIssue.jspa [c.a.j.i.customfields.impl.AbstractSingleFieldType] Incorrect formatted custom field stored as default com.atlassian.jira.issue.customfields.impl.FieldValidationException: Not a valid URL at com.atlassian.jira.issue.customfields.impl.URLCFType.getSingularObjectFromString(URLCFType.java:20) at com.atlassian.jira.issue.customfields.impl.GenericTextCFType.getObjectFromDbValue(GenericTextCFType.java:83) at com.atlassian.jira.issue.customfields.impl.GenericTextCFType.getObjectFromDbValue(GenericTextCFType.java:51) at com.atlassian.jira.issue.customfields.impl.AbstractSingleFieldType.getDefaultValue(AbstractSingleFieldType.java:161) at com.atlassian.jira.issue.fields.CustomFieldImpl.populateDefaults(CustomFieldImpl.java:565) at com.atlassian.jira.issue.fields.screen.FieldScreenRenderLayoutItemImpl.populateDefaults(FieldScreenRenderLayoutItemImpl.java:71) at com.atlassian.jira.web.action.issue.CreateIssue.populateFieldHolderWithDefaults(CreateIssue.java:243) at com.atlassian.jira.web.action.issue.CreateIssue.doExecute(CreateIssue.java:150) ... 1 filtered at com.atlassian.jira.action.JiraActionSupport.execute(JiraActionSupport.java:63) ... 7 filtered at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) ... 50 filtered at com.atlassian.greenhopper.jira.filters.ClassicBoardRouter.doFilter(ClassicBoardRouter.java:59) ... 62 filtered at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:70) ... 89 filtered at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) 2016-06-08 14:18:38,116 http-nio-10712-exec-4 ERROR dlaser 858x197x1 8gt7vl 10.0.2.2 /secure/CreateIssue.jspa [c.a.j.i.customfields.impl.AbstractSingleFieldType] Incorrect formatted custom field stored as default com.atlassian.jira.issue.customfields.impl.FieldValidationException: Not a valid URL at com.atlassian.jira.issue.customfields.impl.URLCFType.getSingularObjectFromString(URLCFType.java:20) at com.atlassian.jira.issue.customfields.impl.GenericTextCFType.getObjectFromDbValue(GenericTextCFType.java:83) at com.atlassian.jira.issue.customfields.impl.GenericTextCFType.getObjectFromDbValue(GenericTextCFType.java:51) at com.atlassian.jira.issue.customfields.impl.AbstractSingleFieldType.getDefaultValue(AbstractSingleFieldType.java:161) at com.atlassian.jira.issue.customfields.config.item.DefaultValueConfigItem.getConfigurationObject(DefaultValueConfigItem.java:31) at com.atlassian.jira.issue.fields.config.FieldConfigItemImpl.getConfigurationObject(FieldConfigItemImpl.java:36) at com.atlassian.jira.issue.customfields.CustomFieldUtils.buildParams(CustomFieldUtils.java:404) at com.atlassian.jira.plugin.customfield.CustomFieldTypeModuleDescriptorImpl$2.call(CustomFieldTypeModuleDescriptorImpl.java:177) at com.atlassian.jira.plugin.customfield.CustomFieldTypeModuleDescriptorImpl$2.call(CustomFieldTypeModuleDescriptorImpl.java:172) at com.atlassian.ozymandias.SafePluginPointAccess.call(SafePluginPointAccess.java:187) at com.atlassian.jira.plugin.customfield.CustomFieldTypeModuleDescriptorImpl.getSupplierValueOrHtmlErrorMessage(CustomFieldTypeModuleDescriptorImpl.java:372) at com.atlassian.jira.plugin.customfield.CustomFieldTypeModuleDescriptorImpl.getEditHtml(CustomFieldTypeModuleDescriptorImpl.java:172) at com.atlassian.jira.issue.fields.CustomFieldImpl.getEditHtml(CustomFieldImpl.java:925) at com.atlassian.jira.issue.fields.CustomFieldImpl.getCreateHtml(CustomFieldImpl.java:911) at com.atlassian.jira.issue.fields.screen.AbstractFieldScreenLayoutItem.getCreateHtml(AbstractFieldScreenLayoutItem.java:68) at com.atlassian.jira.issue.fields.screen.FieldScreenRenderLayoutItemImpl.getCreateHtml(FieldScreenRenderLayoutItemImpl.java:42) ... 3 filtered at java.lang.reflect.Method.invoke(Method.java:497) at webwork.util.InjectionUtils$DefaultInjectionImpl.invoke(InjectionUtils.java:70) at webwork.util.InjectionUtils.invoke(InjectionUtils.java:56) at webwork.util.ValueStack.findValue(ValueStack.java:517) at webwork.util.ValueStack.findValue(ValueStack.java:216) at webwork.view.taglib.WebWorkBodyTagSupport.findValue(WebWorkBodyTagSupport.java:62) at webwork.view.taglib.BasicPropertyTag.doStartTag(BasicPropertyTag.java:54) at jsp.template.standard.issuefields_jsp._jspx_meth_ww_005fproperty_005f5(issuefields_jsp.java:790) at jsp.template.standard.issuefields_jsp._jspx_meth_ww_005fif_005f8(issuefields_jsp.java:762) at jsp.template.standard.issuefields_jsp._jspx_meth_ww_005fif_005f7(issuefields_jsp.java:729) at jsp.template.standard.issuefields_jsp._jspx_meth_ww_005fiterator_005f4(issuefields_jsp.java:696) at jsp.template.standard.issuefields_jsp._jspx_meth_ww_005fiterator_005f3(issuefields_jsp.java:655) at jsp.template.standard.issuefields_jsp._jspx_meth_ww_005felse_005f1(issuefields_jsp.java:618) at jsp.template.standard.issuefields_jsp._jspService(issuefields_jsp.java:97) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) ... 25 filtered at webwork.view.taglib.IncludeTag.include(IncludeTag.java:64) at webwork.view.taglib.ui.ComponentTag.doEndTag(ComponentTag.java:269) at jsp.secure.views.createissue_002ddetails_jsp._jspx_meth_ww_005fcomponent_005f0(createissue_002ddetails_jsp.java:1347) at jsp.secure.views.createissue_002ddetails_jsp._jspx_meth_page_005fapplyDecorator_005f0(createissue_002ddetails_jsp.java:818) at jsp.secure.views.createissue_002ddetails_jsp._jspx_meth_ui_005fparam_005f2(createissue_002ddetails_jsp.java:746) at jsp.secure.views.createissue_002ddetails_jsp._jspx_meth_ui_005fsoy_005f2(createissue_002ddetails_jsp.java:706) at jsp.secure.views.createissue_002ddetails_jsp._jspx_meth_ui_005fparam_005f1(createissue_002ddetails_jsp.java:664) at jsp.secure.views.createissue_002ddetails_jsp._jspx_meth_ui_005fsoy_005f1(createissue_002ddetails_jsp.java:624) at jsp.secure.views.createissue_002ddetails_jsp._jspx_meth_ww_005fif_005f1(createissue_002ddetails_jsp.java:488) at jsp.secure.views.createissue_002ddetails_jsp._jspService(createissue_002ddetails_jsp.java:177) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) ... 18 filtered at com.atlassian.web.servlet.plugin.LocationCleanerFilter.doFilter(LocationCleanerFilter.java:37) ... 74 filtered at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:70) ... 36 filtered at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) ... 50 filtered at com.atlassian.greenhopper.jira.filters.ClassicBoardRouter.doFilter(ClassicBoardRouter.java:59) ... 62 filtered at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:70) ... 89 filtered at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)
Workaround
- Backup Jira
- Stop Jira
- Find the culprit field with the following SQL query
select GC.id as "GenericConfiguration ID",CF.cfname as "Custom Field Name" from genericconfiguration GC join fieldconfiguration FC on GC.datakey = cast(FC.id as varchar) join customfield CF on FC.fieldid = concat('customfield_',cast(CF.id as varchar)) where xmlvalue = '<string></string>' and customfieldtypekey = 'com.atlassian.jira.plugin.system.customfieldtypes:url';
- Delete the problematic rows from genericconfiguration
delete from genericconfiguration where id in (select GC.id from genericconfiguration GC join fieldconfiguration FC on GC.datakey = cast(FC.id as varchar) join customfield CF on FC.fieldid = concat('customfield_',cast(CF.id as varchar)) where xmlvalue = '<string></string>' and customfieldtypekey = 'com.atlassian.jira.plugin.system.customfieldtypes:url');
- Restart JIRA.
Attachments
Issue Links
- is related to
-
JRASERVER-35222 FieldValidationException on custom field 'URL Field' if no default value
- Closed
- relates to
-
JRACLOUD-61382 FieldValidationException on URL custom field with no default value after having a default value.
- Closed