-
Bug
-
Resolution: Fixed
-
High (View bug fix roadmap)
-
6.4.3
-
None
Summary
When upgrading JIRA Agile to 6.4.3 with JIRA below 6.2, the upgrade task to convert the Global Rank field into LexoRank is not setting up the marker rows in the LexoRank table. This prevents ranking operations from working in any Agile board.
You may see a lot of entries in the log file similar to the below:
2014-07-30 13:28:07,855 http-bio-8328-exec-25 ERROR XXXXX 807x2456x3 37cs93 172.22.2.65 /rest/greenhopper/1.0/sprint/rank [event.listeners.search.IssueIndexListener] Error re-indexing changes for issue 'XX-#' java.lang.RuntimeException: Expected exactly 2 rows; the maximum marker row and the lowest ranked row for rank field[id=######]
Diagnosis
Run the below SQL to detect the condition:
select id from customfield where customfieldtypekey = 'com.pyxis.greenhopper.jira:gh-lexo-rank'; select * from "AO_60DB71_LEXORANK" where ("ISSUE_ID" = -9223372036854775808 and "RANK" LIKE '%|000000:' and "TYPE" = 0) or ("ISSUE_ID" = 9223372036854775807 and "RANK" like '%|zzzzzz:' and "TYPE" = 2);
If there are not exactly two results in the second query, for each result returned in the first query, then you are affected.
Workaround
You'll need to insert the marker fields into the table manually:
Backup JIRA before making any changes.
- Stop JIRA.
- Find out the field ID or IDs for LexoRank fields:
select id from customfield where customfieldtypekey = 'com.pyxis.greenhopper.jira:gh-lexo-rank';
- For each field ID returned by the previous query, run a query like below, replacing <FIELD_ID> by the field ID:
INSERT INTO "AO_60DB71_LEXORANK" ("ID", "FIELD_ID", "ISSUE_ID", "RANK", "TYPE") VALUES (DEFAULT, <FIELD_ID>, -9223372036854775808, '0|000000:', 0); INSERT INTO "AO_60DB71_LEXORANK" ("ID", "FIELD_ID", "ISSUE_ID", "RANK", "TYPE") VALUES (DEFAULT, <FIELD_ID>, 9223372036854775807, '0|zzzzzz:', 2);
- Start JIRA.
[JSWSERVER-10975] LexoRank upgrade tasks fail to create markers in table when upgrading to Agile 6.4.x while running JIRA below 6.2
In my case there are all the entries already in tables. Still I am getting this error. And while I fetch the system fields it never shows me "Rank" field in REST response like this :
{
"id": "customfield_10209",
"name": "Rank",
"custom": true,
"orderable": true,
"navigable": true,
"searchable": true,
"schema":
},
Can you please help with this ?
I am getting this error : Rank index was requested before the plugin was upgraded fully
Logs :
2014-12-17 12:53:01,518 ThreadPoolAsyncTaskExecutor::Thread 28 INFO admin 765x150x1 6k8dn 10.13.28.7 /rest/plugins/1.0/ [atlassian.plugin.manager.DefaultPluginManager] Returned module for key 'com.pyxis.greenhopper.jira:greenhopper-taskboard-shortcut' was null. Not enabling.
2014-12-17 12:53:01,518 ThreadPoolAsyncTaskExecutor::Thread 28 INFO admin 765x150x1 6k8dn 10.13.28.7 /rest/plugins/1.0/ [atlassian.plugin.manager.DefaultPluginManager] Returned module for key 'com.pyxis.greenhopper.jira:greenhopper-chartboard-shortcut' was null. Not enabling.
2014-12-17 12:53:01,518 ThreadPoolAsyncTaskExecutor::Thread 28 INFO admin 765x150x1 6k8dn 10.13.28.7 /rest/plugins/1.0/ [atlassian.plugin.manager.DefaultPluginManager] Returned module for key 'com.pyxis.greenhopper.jira:greenhopper-releasedboard-shortcut' was null. Not enabling.
2014-12-17 12:53:01,924 pool-8-thread-4 INFO admin 765x150x1 6k8dn 10.13.28.7 /rest/plugins/1.0/ [atlassian.plugin.util.WaitUntil] Plugins that have yet to be enabled: [com.pyxis.greenhopper.jira], 54 seconds remaining
2014-12-17 12:53:02,314 ThreadPoolAsyncTaskExecutor::Thread 28 INFO admin 765x150x1 6k8dn 10.13.28.7 /rest/plugins/1.0/ [atlassian.plugin.manager.DefaultPluginManager] Returned module for key 'com.pyxis.greenhopper.jira:greenhopper-delete-shortcut' was null. Not enabling.
2014-12-17 12:53:02,314 ThreadPoolAsyncTaskExecutor::Thread 28 INFO admin 765x150x1 6k8dn 10.13.28.7 /rest/plugins/1.0/ [greenhopper.plugin.sampledata.JiraImportersPluginInstallerImpl] Checking if jira-importers-plugin is present and at version 4.4 or higher
2014-12-17 12:53:02,314 ThreadPoolAsyncTaskExecutor::Thread 28 INFO admin 765x150x1 6k8dn 10.13.28.7 /rest/plugins/1.0/ [greenhopper.plugin.sampledata.JiraImportersPluginInstallerImpl] jira-importers-plugin already at 6.0.4.
2014-12-17 12:53:04,643 pool-8-thread-4 INFO admin 765x150x1 6k8dn 10.13.28.7 /rest/plugins/1.0/ [greenhopper.service.logging.LogSupport]
*********************************************************************************
Atlassian GreenHopper v6.3.13.0 #e6f40730f630c227 built 2014-04-28T07:00:11.120+05:30 - plugin started. Get Agile!
*********************************************************************************
2014-12-17 12:53:05,221 pool-8-thread-4 ERROR admin 765x150x1 6k8dn 10.13.28.7 /rest/plugins/1.0/ [jira.issue.managers.DefaultCustomFieldManager] Could not load custom field type plugin with key 'com.pyxis.greenhopper.jira:gh-lexo-rank'. Is the plugin present and enabled?
2014-12-17 12:53:06,361 pool-8-thread-4 INFO admin 765x150x1 6k8dn 10.13.28.7 /rest/plugins/1.0/ [fields.layout.field.AbstractFieldLayoutManager] Field layout contains non-orderable field with id 'customfield_11209'.
2014-12-17 12:53:06,627 pool-8-thread-4 INFO admin 765x150x1 6k8dn 10.13.28.7 /rest/plugins/1.0/ [fields.layout.field.AbstractFieldLayoutManager] Field layout contains non-orderable field with id 'customfield_11209'.
2014-12-17 12:53:08,549 pool-8-thread-4 ERROR admin 765x150x1 6k8dn 10.13.28.7 /rest/plugins/1.0/ [jira.issue.managers.DefaultCustomFieldManager] Could not load custom field type plugin with key 'com.pyxis.greenhopper.jira:gh-lexo-rank'. Is the plugin present and enabled?
2014-12-17 12:53:08,752 pool-8-thread-4 INFO admin 765x150x1 6k8dn 10.13.28.7 /rest/plugins/1.0/ [greenhopper.service.logging.LogSupport]
Managed Issue Types
Epic id=16 name=Epic
Story id=17 name=Story
Managed Custom Fields
Epic Colour id=customfield_11208 name=Epic Color type=com.pyxis.greenhopper.jira:gh-epic-color
Epic Link id=customfield_11205 name=Epic Link type=com.pyxis.greenhopper.jira:gh-epic-link
Epic Name id=customfield_11206 name=Epic Name type=com.pyxis.greenhopper.jira:gh-epic-label
Epic Status id=customfield_11207 name=Epic Status type=com.pyxis.greenhopper.jira:gh-epic-status
Default Global Rank id=customfield_11800 name=Rank type=com.pyxis.greenhopper.jira:gh-global-rank
Sprint id=customfield_11204 name=Sprint type=com.pyxis.greenhopper.jira:gh-sprint
Story Points id=customfield_11202 name=Story Points type=com.atlassian.jira.plugin.system.customfieldtypes:float
Managed Issue Link Types
Epic Link Issue Link Type id=10300 name=Epic-Story Link
2014-12-17 12:53:35,877 StreamsCompletionService::thread-4 ERROR admin 773x519x1 6k8dn 10.13.28.7 /plugins/servlet/streams [jira.issue.managers.DefaultCustomFieldManager] Could not load custom field type plugin with key 'com.pyxis.greenhopper.jira:gh-lexo-rank'. Is the plugin present and enabled?
2014-12-17 12:53:36,783 StreamsCompletionService::thread-4 INFO admin 773x519x1 6k8dn 10.13.28.7 /plugins/servlet/streams [fields.layout.field.AbstractFieldLayoutManager] Field layout contains non-orderable field with id 'customfield_11209'.
2014-12-17 12:57:56,111 http-bio-9090-exec-9 ERROR syncuser 777x625x1 1ao875y 10.13.28.11 /rest/api/2/search [jira.rest.exception.ExceptionInterceptor] Returning internal server error in response
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$TypeOutInvoker$1.invoke(DispatchProviderHelper.java:205) <+4> (DispatchProviderHelper.java:100) (DefaultMethodInvocation.java:61) (ExpandInterceptor.java:38) (DefaultMethodInvocation.java:61)
at com.atlassian.jira.rest.exception.ExceptionInterceptor.intercept(ExceptionInterceptor.java:59) <+1> (DefaultMethodInvocation.java:61)
at com.atlassian.jira.rest.v2.issue.scope.RequestScopeInterceptor.intercept(RequestScopeInterceptor.java:43) <+14> (DefaultMethodInvocation.java:61) (DispatchProviderHelper.java:132) (DispatchProviderHelper.java:201) (ResourceJavaMethodDispatcher.java:75) (HttpMethodRule.java:288) (ResourceClassRule.java:108) (RightHandPathRule.java:147) (RootResourceClassesRule.java:84) (WebApplicationImpl.java:1469) (WebApplicationImpl.java:1400) (WebApplicationImpl.java:1349) (WebApplicationImpl.java:1339) (WebComponent.java:416) (ServletContainer.java:537)
at com.atlassian.plugins.rest.module.RestDelegatingServletFilter$JerseyOsgiServletContainer.doFilter(RestDelegatingServletFilter.java:178) <+1> (ServletContainer.java:795)
at com.atlassian.plugins.rest.module.RestDelegatingServletFilter.doFilter(RestDelegatingServletFilter.java:73) <+16> (DelegatingPluginFilter.java:74) (IteratingFilterChain.java:42) (ServletFilterModuleContainerFilter.java:77) (ServletFilterModuleContainerFilter.java:63) (DelegatingPluginFilter.java:74) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:66) (RestServletUtilsUpdaterFilter.java:26) (RestServletUtilsUpdaterFilter.java:40) (DelegatingPluginFilter.java:74) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:66) (ContextFilter.java:25) (DelegatingPluginFilter.java:74) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:66)
at com.atlassian.mywork.client.filter.ServingRequestsFilter.doFilter(ServingRequestsFilter.java:37) <+3> (DelegatingPluginFilter.java:74) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:66)
at com.atlassian.prettyurls.filter.PrettyUrlsDispatcherFilter.doFilter(PrettyUrlsDispatcherFilter.java:60) <+3> (DelegatingPluginFilter.java:74) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:66)
at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFilter.doFilter(PrettyUrlsSiteMeshFilter.java:92) <+3> (DelegatingPluginFilter.java:74) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:66)
at com.atlassian.prettyurls.filter.PrettyUrlsMatcherFilter.doFilter(PrettyUrlsMatcherFilter.java:56) <+15> (DelegatingPluginFilter.java:74) (IteratingFilterChain.java:42) (ServletFilterModuleContainerFilter.java:77) (ServletFilterModuleContainerFilter.java:63) (ApplicationFilterChain.java:243) (ApplicationFilterChain.java:210) (AccessLogFilter.java:103) (AccessLogFilter.java:87) (ApplicationFilterChain.java:243) (ApplicationFilterChain.java:210) (XsrfTokenAdditionRequestFilter.java:54) (ApplicationFilterChain.java:243) (ApplicationFilterChain.java:210) (IteratingFilterChain.java:46) (DelegatingPluginFilter.java:66)
at com.atlassian.plugin.remotable.plugin.module.permission.ApiScopingFilter.doFilter(ApiScopingFilter.java:62) <+3> (DelegatingPluginFilter.java:74) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:66)
at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61) <+22> (DelegatingPluginFilter.java:74) (IteratingFilterChain.java:42) (ServletFilterModuleContainerFilter.java:77) (ServletFilterModuleContainerFilter.java:63) (ApplicationFilterChain.java:243) (ApplicationFilterChain.java:210) (SecurityFilter.java:234) (ApplicationFilterChain.java:243) (ApplicationFilterChain.java:210) (TrustedApplicationsFilter.java:98) (ApplicationFilterChain.java:243) (ApplicationFilterChain.java:210) (BaseLoginFilter.java:169) (JiraLoginFilter.java:70) (ApplicationFilterChain.java:243) (ApplicationFilterChain.java:210) (IteratingFilterChain.java:46) (DelegatingPluginFilter.java:66) (OAuthFilter.java:55) (DelegatingPluginFilter.java:74) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:66)
at com.atlassian.plugins.rest.module.servlet.RestSeraphFilter.doFilter(RestSeraphFilter.java:40) <+3> (DelegatingPluginFilter.java:74) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:66)
at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61) <+9> (DelegatingPluginFilter.java:74) (IteratingFilterChain.java:42) (ServletFilterModuleContainerFilter.java:77) (ServletFilterModuleContainerFilter.java:63) (ApplicationFilterChain.java:243) (ApplicationFilterChain.java:210) (AbstractJohnsonFilter.java:71) (ApplicationFilterChain.java:243) (ApplicationFilterChain.java:210)
at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92) <+9> (UrlRewriteFilter.java:394) (ApplicationFilterChain.java:243) (ApplicationFilterChain.java:210) (GzipFilter.java:80) (GzipFilter.java:51) (ApplicationFilterChain.java:243) (ApplicationFilterChain.java:210) (IteratingFilterChain.java:46) (DelegatingPluginFilter.java:66)
at com.atlassian.plugin.remotable.plugin.module.oauth.OAuth2LOFilter.doFilter(OAuth2LOFilter.java:70) <+3> (DelegatingPluginFilter.java:74) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:66)
at com.atlassian.plugin.remotable.host.common.service.http.bigpipe.BigPipeRequestIdFilter.doFilter(BigPipeRequestIdFilter.java:33) <+3> (DelegatingPluginFilter.java:74) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:66)
at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61) <+41> (DelegatingPluginFilter.java:74) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:66) (JWDSendRedirectFilter.java:25) (DelegatingPluginFilter.java:74) (IteratingFilterChain.java:42) (ServletFilterModuleContainerFilter.java:77) (ServletFilterModuleContainerFilter.java:63) (ApplicationFilterChain.java:243) (ApplicationFilterChain.java:210) (ChainedFilterStepRunner.java:84) (ApplicationFilterChain.java:243) (ApplicationFilterChain.java:210) (AbstractCachingFilter.java:33) (AbstractHttpFilter.java:31) (ApplicationFilterChain.java:243) (ApplicationFilterChain.java:210) (AbstractEncodingFilter.java:41) (AbstractHttpFilter.java:31) (PathMatchingEncodingFilter.java:45) (AbstractHttpFilter.java:31) (ApplicationFilterChain.java:243) (ApplicationFilterChain.java:210) (JiraStartupChecklistFilter.java:74) (ApplicationFilterChain.java:243) (ApplicationFilterChain.java:210) (ChainedFilterStepRunner.java:84) (JiraFirstFilter.java:57) (ApplicationFilterChain.java:243) (ApplicationFilterChain.java:210) (StandardWrapperValve.java:225) (StandardContextValve.java:123) (AuthenticatorBase.java:472) (StandardHostValve.java:168) (ErrorReportValve.java:98) (StandardEngineValve.java:118) (AccessLogValve.java:927) (CoyoteAdapter.java:407) (AbstractHttp11Processor.java:1001) (AbstractProtocol.java:585) (JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: com.atlassian.greenhopper.service.rank.RankException: Rank index was requested before the plugin was upgraded fully
at com.atlassian.greenhopper.service.rank.RankIndexServiceImpl$RankIndexSupplier.get(RankIndexServiceImpl.java:408)
at com.atlassian.greenhopper.service.rank.RankIndexServiceImpl$RankIndexSupplier.get(RankIndexServiceImpl.java:388)
at com.google.common.base.Suppliers$MemoizingSupplier.get(Suppliers.java:109)
at com.atlassian.greenhopper.service.rank.RankIndexServiceImpl.getIndex(RankIndexServiceImpl.java:385)
at com.atlassian.greenhopper.service.rank.RankIndexServiceImpl.fetchCreate(RankIndexServiceImpl.java:348)
at com.atlassian.greenhopper.customfield.rank.RankCFType.getValueFromIssue(RankCFType.java:43)
at com.atlassian.jira.issue.fields.CustomFieldImpl.getJsonFromIssue(CustomFieldImpl.java:2281)
at com.atlassian.jira.rest.v2.issue.IssueBeanBuilder.getFieldValue(IssueBeanBuilder.java:256)
at com.atlassian.jira.rest.v2.issue.IssueBeanBuilder.addFields(IssueBeanBuilder.java:177)
at com.atlassian.jira.rest.v2.issue.IssueBeanBuilder.build(IssueBeanBuilder.java:109)
at com.atlassian.jira.rest.v2.search.SearchResource$IssueToIssueBean.apply(SearchResource.java:272)
at com.atlassian.jira.rest.v2.search.SearchResource$IssueToIssueBean.apply(SearchResource.java:255)
at com.google.common.collect.Lists$TransformingRandomAccessList.get(Lists.java:451)
at java.util.AbstractList$Itr.next(Unknown Source)
at java.util.AbstractCollection.toArray(Unknown Source)
at java.util.ArrayList.<init>(Unknown Source)
at com.google.common.collect.Lists.newArrayList(Lists.java:119)
at com.atlassian.jira.rest.v2.search.SearchResource.asResultsBean(SearchResource.java:227)
at com.atlassian.jira.rest.v2.search.SearchResource.search(SearchResource.java:175)
... 179 more
2014-12-17 12:58:26,002 http-bio-9090-exec-17 INFO admin 778x627x1 6k8dn 10.13.28.7 /rest/plugins/1.0/com.pyxis.greenhopper.jira-key [atlassian.plugin.manager.DefaultPluginManager] Disabling com.pyxis.greenhopper.jira
2014-12-17 12:58:26,502 Timer-2 INFO [greenhopper.service.logging.LogSupport]
We are having problems with lexorank as well, a lot can be found via google etc but nothing to help actually solve the issue. Could this be somehow related to it, the queries on this ticket cannot be run as the field name is not issue_id etc but "ISSUE_ID" (the quotes and case actually matter!)
select * from "AO_60DB71_LEXORANK" where (issue_id = -9223372036854775808 and rank LIKE '%|000000:' and type = 0) or (issue_id = 9223372036854775807 and rank like '%|zzzzzz:' and type = 2);
ERROR: column "issue_id" does not exist
LINE 3: select * from "AO_60DB71_LEXORANK" where (issue_id = -922337...
^
-
-
-
-
-
-
-
-
-
- Error **********
-
-
-
-
-
-
-
-
ERROR: column "issue_id" does not exist
But
select * from "AO_60DB71_LEXORANK" where ("ISSUE_ID" = -9223372036854775808 and "RANK" LIKE '%|000000:' and "TYPE" = 0) or ("ISSUE_ID" = 9223372036854775807 and "RANK" like '%|zzzzzz:' and "TYPE" = 2);
Total query runtime: 12 ms.
2 rows retrieved.
The actual field names have to be enclosed in quotes and they are case sensitive. Using postgresql 9.2.4 on windows.
Any ideas on how to get this to work? Issue creation takes a long time, logs are filled with
2014-12-05 13:00:55,276 http-bio-443-exec-97 WARN esaviitala 780x272055x1 wvmpcw 89.236.107.194 /secure/QuickCreateIssue.jspa [greenhopper.customfield.lexorank.LexoRankCFType] Unable to retrieve rank for field [10630] and issue [15669]
2014-12-05 13:00:55,276 http-bio-443-exec-97 WARN esaviitala 780x272055x1 wvmpcw 89.236.107.194 /secure/QuickCreateIssue.jspa [greenhopper.customfield.lexorank.LexoRankCFType] gh.lexorank.service.error.retrytimeout
Indexing takes very long time, it claims to index max rank but it never works. The same deal for every ticket on the next run. Any ideas?
Edit: Forgot to add, Jira 6.3.6 on premises and Jira Agile 6.6.13
FYI for those of you using MySQL... DON'T USE DOUBLE QUOTES AROUND TABLE NAMES OR COLUMN NAMES.
Use the backtick instead!!!