NullpointerException in LexoRankBalanceRankInfoService

Jon Martin Solaas August 10, 2018

As described in https://confluence.atlassian.com/jirakb/troubleshooting-new-ranking-system-issues-779159221.html one can access https://<jira-base-url>/rest/greenhopper/1.0/lexorank/balance to get balancer status. Instead I get a NullpointerException.

The base problem I try to fix is https://confluence.atlassian.com/jirakb/issue-ranking-operation-fails-jira-software-cannot-execute-the-rank-operation-at-this-time-913477224.html which in one project occurs 100% while is not so noisy in others.

Any suggestions on how to proceed from here?

 (Running 

<status><status-code>500</status-code><stack-trace>java.lang.NullPointerException at com.atlassian.greenhopper.service.lexorank.balance.LexoRankBalanceRankInfoService.getIssueKey(LexoRankBalanceRankInfoService.java:45) at com.atlassian.greenhopper.service.lexorank.balance.LexoRankBalanceRankInfoService.getMaxRank(LexoRankBalanceRankInfoService.java:64) at com.atlassian.greenhopper.service.lexorank.balance.LexoRankBalancer.getBalanceStatus(LexoRankBalancer.java:207) at com.atlassian.greenhopper.web.configuration.LexoRankHelper.getBalanceStatus(LexoRankHelper.java:38) at com.atlassian.greenhopper.web.configuration.LexoRankResource$1.call(LexoRankResource.java:86) at com.atlassian.greenhopper.web.configuration.LexoRankResource$1.call(LexoRankResource.java:82) at com.atlassian.greenhopper.web.util.RestCall.response(RestCall.java:42) at com.atlassian.greenhopper.web.AbstractResource.createResponse(AbstractResource.java:111) at com.atlassian.greenhopper.web.AbstractResource.responseWithoutAccessCheck(AbstractResource.java:105) at com.atlassian.greenhopper.web.configuration.LexoRankResource.balanceStatus(LexoRankResource.java:81) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker$1.invoke(DispatchProviderHelper.java:192) at com.a

3 answers

1 accepted

1 vote
Answer accepted
Jon Martin Solaas December 11, 2018

This did the trick:

alter table "AO_60DB71_LEXORANK" alter column "RANK" type character varying(255) collate pg_catalog."POSIX";
1 vote
Vikas Pandey
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
April 29, 2021

check the workaround section here : https://jira.atlassian.com/browse/JSWSERVER-17685

Holger Lehmann _catworkx GmbH_ May 12, 2021

Hi, this affected me, too (Jira 8.5.5).

Here are my 2ct:

I just want to share a quick helper script to find the "next" valid entry quicker (change -U Jira and -d jiradb accordingly):

for ((i=0;i<1000;i++)) ; do PGOPTIONS='--client-min-messages=warning' psql -X -q -a -1 -v ON_ERROR_STOP=1 --pset pager=off -U jira -d jiradb -c "select id from jiraissue j2 where j2.id in (select adl.\"ISSUE_ID\" from \"AO_60DB71_LEXORANK\" adl where adl.\"FIELD_ID\"=12100 and adl.\"TYPE\"=1 order by length(adl.\"RANK\") desc, adl.\"RANK\" desc limit $i);" ; done > log.txt

This iterates over the first 1000 (might not be enough for you) datasets and you can simply use less/more/vi/grep/whatever to find the first line with the text "(1 row)" in the log.txt to determine your offset.

Limiting the output in the select to just the "id" column should speed things up and make it easier for you to find "(1 row)" in your logfile:

fgrep -B5 '(1 row)' log.txt | head -5

would give you for example:

select id from jiraissue j2 where j2.id in (select adl."ISSUE_ID" from "AO_60DB71_LEXORANK" adl where adl."FIELD_ID"=12100 and adl."TYPE"=1 order by length(adl."RANK") desc, adl."RANK" desc limit 27);
id
---------
1663650

thus letting you know you can delete to top 26 "AO_60DB71_LEXORANK" entries.

Cheers,
Holger

0 votes
Moses Thomas
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
August 10, 2018

@Jon Martin SolaasOne question are you  using  HTTP or HTTPS ?  for your  Jira instance

Jon Martin Solaas August 10, 2018

Using https.

Suggest an answer

Log in or Sign up to answer