JIRA 3.11 Upgrade Guide

JIRA Documentation

Index

Upgrading from JIRA 3.10.x to 3.11

Please follow the JIRA general upgrade instructions, plus note the following:

Administrative notes

  • To take advantage of the performance enhancements in JIRA 3.11, it is recommended that you enable GZip compression (unless you are using mod_proxy).
  • The jira-application.properties file has a new option, 'progress', for the following attribute:
     jira.table.cols.subtasks
    

    The 'progress' option controls the display of the 'Progress' field in issues and reports.

  • JIRA 3.11 introduces a bug fix for JRA-12354. This means that the CVS and Perforce plugin will perform better at detecting commits for a particular issue key, avoiding partial matches on similar project keys. If users have taken advantage of the previous relaxed key matching, they can revert to the old behaviour by simply setting the following application property in the jira-application.properties file and restarting JIRA:
    jira.option.key.detection.backwards.compatible=true
    

Plugins

Updating plugins
If you are using any of the following plugins, you will need to update them to their latest versions when performing the upgrade:

3rd Party and personal plugins may also be affected (esp. if using lucene to store dates). These will need to be updated as well.

If these are updated after the upgrade (instead of as part of the upgrade), you will need to do a reindex.

A failure to update these plugins will result in lots of errors that look like:

Error 1

2007-07-25 15:23:27,553 http-8090-Processor4 ERROR [charting.charts.createdvsresolved.CreatedVsResolvedChart] Could not create velocity parameters For input string: "20070725144811"
java.lang.NumberFormatException: For input string: "20070725144811"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
	at java.lang.Long.parseLong(Long.java:415)
	at org.apache.lucene.document.DateField.stringToTime(DateField.java:100)
	at org.apache.lucene.document.DateField.stringToDate(DateField.java:104)
	at com.atlassian.jira.ext.charting.data.DatePeriodStatisticsMapper.getValueFromLuceneField(DatePeriodStatisticsMapper.java:47)
	at com.atlassian.jira.ext.charting.data.OneDimensionalObjectHitCollector.adjustMapForValues(OneDimensionalObjectHitCollector.java:57)
	at com.atlassian.jira.ext.charting.data.OneDimensionalObjectHitCollector.collect(OneDimensionalObjectHitCollector.java:46)
	at org.apache.lucene.search.IndexSearcher$1.collect(IndexSearcher.java:137)
	at org.apache.lucene.search.Scorer.score(Scorer.java:49)
	at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:146)
	at org.apache.lucene.search.Searcher.search(Searcher.java:118)
	at com.atlassian.jira.issue.search.providers.LuceneSearchProvider.search(LuceneSearchProvider.java:111)
...

Error 2

Caused by: java.lang.NoSuchMethodError: org.apache.lucene.document.Document.add(Lorg/apache/lucene/document/Field;)V
	at com.atlassian.jira.plugin.labels.LabelSearcher.index(LabelSearcher.java:95)
	at com.atlassian.jira.issue.index.indexers.impl.DefaultCustomFieldIndexer.addIndex(DefaultCustomFieldIndexer.java:54)
	at com.atlassian.jira.issue.index.IssueDocument.getDocument(IssueDocument.java:34)
	at com.atlassian.jira.issue.index.IssueDocumentBuilderImpl.get(IssueDocumentBuilderImpl.java:14)
	at com.atlassian.jira.issue.index.SingleThreadedIssueIndexer$IssueAndCommentCreator.handleIssueIndexing(SingleThreadedIssueIndexer.java:404)
	at com.atlassian.jira.issue.index.SingleThreadedIssueIndexer$AbstractIssueAndCommentHandler.indexIssuesAndComments(SingleThreadedIssueIndexer.java:318)
	at com.atlassian.jira.issue.index.SingleThreadedIssueIndexer.indexIssuesAndComments(SingleThreadedIssueIndexer.java:122)
	at com.atlassian.jira.issue.index.MultiThreadedIssueIndexer.indexIssuesAndComments(MultiThreadedIssueIndexer.java:41)
	at com.atlassian.jira.issue.index.SingleThreadedIssueIndexer$2.perform(SingleThreadedIssueIndexer.java:113)
	at com.atlassian.bonnie.ConcurrentLuceneConnection.withWriter(ConcurrentLuceneConnection.java:296)
	at com.atlassian.jira.issue.index.SingleThreadedIssueIndexer$1.perform(SingleThreadedIssueIndexer.java:107)
	at com.atlassian.bonnie.ConcurrentLuceneConnection.withWriter(ConcurrentLuceneConnection.java:296)
	at com.atlassian.jira.issue.index.SingleThreadedIssueIndexer.indexIssues(SingleThreadedIssueIndexer.java:102)
	at com.atlassian.jira.issue.index.SingleThreadedIssueIndexer$6.perform(SingleThreadedIssueIndexer.java:219)
...

If you see these errors, please ensure that you are using the latest compatible version of the plugin for 3.11. If there is no supported version for 3.11, please contact the plugin developer via the plugin's homepage.

Developer notes

Modification to SOAP clients
If you have written a SOAP client for any JIRA version prior to 3.11 and are invoking any methods to get RemoteIssueType you will encounter the bug JRA-13529. The reason for this is that we have added extra information to the RemoteIssueType object that indicates if the issue type is a subTask issue type. To avoid the problem you will need to regenerate your remote object stubs against the updated JIRA 3.11 wsdl.

If you would like your SOAP client to work against multiple versions of JIRA then you need to use the latest stubs that have been generated against JIRA 3.11. You will need to not use any of the new functionality and you will need to remember that the isSubTask variable in the RemoteIssueType objects will be defaulted to false.

ThreadLocalQueryProfiler searchers have been moved to ThreadLocalSearcherCache
There may be a number of plugins that reference the ThreadLocalQueryProfiler searcher methods directly. These need to now reference the ThreadLocalSearcherCache.

Lucene Upgrade
We upgraded our version of Lucene to 2.2. If your plugin uses to Lucene to index/read data, please ensure that it works with JIRA 3.11. If you are indexing/reading dates, more than likely it will have broken and you will need to use the new Lucene 2 methods.

Database changes

There were no database changes in this release.

Upgrading from JIRA 3.9.x and earlier

In addition to the above, please read the Upgrade Guide for every version you are skipping during the upgrade. The complete list of Upgrade Guides is available here.

Labels:

jiraupgradeguide jiraupgradeguide Delete
Enter labels to add to this page:
Wait Image 
Looking for a label? Just start typing.
  1. Nov 28, 2007

    Dave Nice says:

    Hi there, I'm in the process of upgrading from Jira 3.5 to 3.11.  As recom...

    Hi there,

    I'm in the process of upgrading from Jira 3.5 to 3.11.  As recommended, I have regenerated my SOAP stubs.

    To get my code to compile, I've had to make changes like these:

                            actionParams = new RemoteFieldValue[]{
                            new RemoteFieldValue(new String[]{CUSTOM_RETURN_VALUE}, CUSTOM_RETURN_FIELD)};
    //                        new RemoteFieldValue(CUSTOM_RETURN_FIELD, new String[]{CUSTOM_RETURN_VALUE})};

    Are these changes in line with what you'd expect?  The commented line worked in 3.5 and the uncommented line will compile in 3.11.  Has the constructor been turned around or do I need to do more work?

    Thanks in advance!

    Dave 

    1. Nov 28, 2007

      Eddie Kua says:

      Hi Dave, By comparing through our JIRA API and testing on my own machine. The s...

      Hi Dave,

      By comparing through our JIRA API and testing on my own machine. The sequence of parameters are still same as previous version of JIRA:

      It should be working in this way:

      new RemoteFieldValue(String id, String[] values);
      

      Can you please try delete the old_stub and try to regenerate the new stub again via the following link:

      If that doesn't solve your problem, can you please raise a support request at our support server:

      Cheers,
      Eddie

      1. Nov 29, 2007

        Dave Nice says:

        Hi Eddie, Looks like my WSDL has the parameters in the wrong order: <comple...

        Hi Eddie,

        Looks like my WSDL has the parameters in the wrong order:

        <complexType name="RemoteAttachment">
            <complexContent>
            <extension base="tns2:AbstractRemoteEntity">
            <sequence>
        <element name="filename" nillable="true" type="xsd:string"/>
        <element name="created" nillable="true" type="xsd:dateTime"/>
        <element name="mimetype" nillable="true" type="xsd:string"/>
        <element name="filesize" nillable="true" type="xsd:long"/>
        <element name="author" nillable="true" type="xsd:string"/>
        </sequence>
        </extension>
        </complexContent>
        </complexType>
            <complexType name="RemoteFieldValue">
            <sequence>
        <element name="values" nillable="true" type="impl:ArrayOf_xsd_string"/>
        <element name="id" nillable="true" type="xsd:string"/>
        </sequence>
        </complexType>

        Any suggestions as to how I can recreate the WSDL?  Where does it come from?

        Dave

        1. Nov 29, 2007

          Dave Nice says:

          Raising a support request...

          Raising a support request...