New and Improved 3.13 Beta. Highlights: Shareable filters and dashboards and lots of other goodies. Any feedback can be raised as JIRA issues in the JIRA project.
Issue Details (XML | Word | Printable)

Key: JRA-5927
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Jeff Turner [Atlassian]
Reporter: Joshua Standing
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
JIRA

Bugzilla importer fails if a previous import has been made with JIRA 3.0.x

Created: 14/Feb/05 12:04 PM   Updated: 30/Jul/06 07:33 PM
Component/s: Import / Export
Affects Version/s: 3.1
Fix Version/s: 3.2

Time Tracking:
Original Estimate: 3 hours
Original Estimate - 3 hours
Remaining Estimate: 3 hours
Remaining Estimate - 3 hours
Time Spent: Not Specified
Remaining Estimate - 3 hours

File Attachments: 1. Java Source File BugzillaImportBean.java (50 kB)

Environment: Windows XP SP1

Participants: Ben Walding, Jeff Turner [Atlassian] and Joshua Standing
Since last comment: 3 years, 13 weeks, 5 days ago
Resolution Date: 24/May/05 09:58 PM
Labels:


 Description  « Hide
When attempting to perform an Bugzilla import for 3.1, the system crashes with Form errors while on the very first issue for the step:
Importing Issues from project(s) 'MyProject'

The same Bugzilla Import works with 3.0.3 and my custom BugzillaImportBean.java based off that version.

Form Errors:

  • Error importing data from bugzilla: java.lang.RuntimeException: class com.atlassian.jira.issue.customfields.impl.ReadOnlyCFType passed an invalid value of type: class java.lang.Double at com.atlassian.jira.issue.customfields.impl.AbstractCustomFieldType.assertObjectImplementsType(AbstractCustomFieldType.java:52) at com.atlassian.jira.issue.customfields.impl.TextCFType.getStringFromSingularObject(TextCFType.java:22) at com.atlassian.jira.issue.customfields.impl.StringCFType.getDbValueFromObject(StringCFType.java:15) at com.atlassian.jira.issue.customfields.impl.AbstractSingleFieldType.createValue(AbstractSingleFieldType.java:115) at com.atlassian.jira.issue.fields.CustomFieldImpl.createValue(CustomFieldImpl.java:478) at com.atlassian.jira.util.BugzillaImportBean.createIssue(BugzillaImportBean.java:306) at com.atlassian.jira.util.BugzillaImportBean.createIssues(BugzillaImportBean.java:244) at com.atlassian.jira.util.BugzillaImportBean.create(BugzillaImportBean.java:169) at com.atlassian.jira.web.action.util.BugzillaImport.doRun(BugzillaImport.java:140) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at webwork.util.InjectionUtils$DefaultInjectionImpl.invoke(InjectionUtils.java:61) at webwork.util.InjectionUtils.invoke(InjectionUtils.java:52) at webwork.action.ActionSupport.invokeCommand(ActionSupport.java:417) at webwork.action.ActionSupport.execute(ActionSupport.java:146) at com.atlassian.jira.action.JiraActionSupport.execute(JiraActionSupport.java:46) at webwork.dispatcher.GenericDispatcher.executeAction(GenericDispatcher.java:131) at com.atlassian.jira.web.dispatcher.JiraServletDispatcher.service(JiraServletDispatcher.java:186) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:142) at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:58) at com.atlassian.jira.web.filters.SitemeshExcludePathFilter.doFilter(SitemeshExcludePathFilter.java:36) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:168) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at com.atlassian.seraph.filter.LoginFilter.doFilter(LoginFilter.java:177) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at com.atlassian.util.profiling.filters.ProfilingFilter.doFilter(ProfilingFilter.java:132) at com.atlassian.jira.web.filters.ProfilingAndErrorFilter.doFilter(ProfilingAndErrorFilter.java:25) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at com.atlassian.jira.web.filters.ActionCleanupDelayFilter.doFilter(ActionCleanupDelayFilter.java:37) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at com.atlassian.johnson.filters.JohnsonFilter.doFilter(JohnsonFilter.java:91) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at com.atlassian.jira.web.filters.gzip.GzipFilter.doFilter(GzipFilter.java:72) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at com.atlassian.core.filters.AbstractEncodingFilter.doFilter(AbstractEncodingFilter.java:36) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:193) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:549) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:589) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666) at java.lang.Thread.run(Thread.java:534)


 All   Comments   Work Log   Change History      Sort Order: Ascending order - Click to sort in descending order
Joshua Standing added a comment - 14/Feb/05 05:13 PM
Version 3.1 does not work if I plug in the original/custom classes for 3.0.3.
Since I need to customize the code to bring in target_milestone, time estimates, and the Bugzilla priority, may I have the newest source for BugzillaImportBean.java?

The reported error has caused some alarm with the stability of 3.1.
Hopefully the problem will be with something I am doing wrong.


Jeff Turner [Atlassian] added a comment - 14/Feb/05 11:55 PM
Thanks, I can confirm this problem. The Bugzilla importer creates a custom field, called 'Bugzilla Id', to store the old Bugzilla Id. In JIRA 3.1 the implementation of this field changed (from string type to number type, to make it sortable). This means that if a Bugzilla import was previously done in 3.0.x, and is now repeated in 3.1, JIRA tries to populate the old string field with numbers, causing that error.

Jeff Turner [Atlassian] added a comment - 15/Feb/05 06:12 PM
The following SQL alters a JIRA 3.0.x database that has previously run the Bugzilla importer, so that further Bugzilla projects can be imported in JIRA 3.1:

update customfield set CUSTOMFIELDSEARCHERKEY='com.atlassian.jira.plugin.system.customfieldtypes:exactnumber' where cfname='Bugzilla Id';
update customfield set CUSTOMFIELDTYPEKEY='com.atlassian.jira.plugin.system.customfieldtypes:importid' where cfname='Bugzilla Id';
update customfieldvalue v1 set v1.NUMBERVALUE=(select v1.STRINGVALUE);


Joshua Standing added a comment - 15/Feb/05 06:20 PM
Thanks, I modified BugzillaImportBean.java as you described and that worked.

Joshua Standing added a comment - 15/Feb/05 06:23 PM
Modified to handle target milestones to fixversions (you may have to swap the calls around to pull in all the target versions)
Added time estimate updates from posted patch
Added Bugzilla Priority (need to create custom select with P1-P5 and name it Priority2)

Jeff Turner [Atlassian] added a comment - 07/Mar/05 05:36 PM
Great, thanks Joshua. We'll get this into 3.2.

Ben Walding added a comment - 19/Apr/05 03:15 AM
The 3rd sql statement should actually be :

update customfieldvalue set numbervalue = cast (stringvalue as int8) where customfield = (select id from customfield where cfname = 'Bugzilla Id');


Jeff Turner [Atlassian] added a comment - 24/May/05 09:58 PM
Fixed. When 3.2 first loads, it changes the old string-based Bugzilla Id custom field to the new (sortable) numeric type.