JIRA does not impose an upper limit on date fields. As a result, an invalid date can be entered that breaks lucene:
2004-09-04 11:46:30,969 WARN [jira.issue.index.DefaultIndexManager] There was an exception whilst reindexing issue
OPS-177java.lang.RuntimeException: time too late
java.lang.RuntimeException: time too late
at org.apache.lucene.document.DateField.timeToString(DateField.java:106)
at org.apache.lucene.document.DateField.dateToString(DateField.java:92)
at com.atlassian.jira.issue.index.AbstractDocument.indexDateField(AbstractDocument.java:96)
at com.atlassian.jira.issue.index.IssueDocument.getDocument(IssueDocument.java:64)
at com.atlassian.jira.issue.index.DefaultIndexManager.indexIssueAndComments(DefaultIndexManager.java:183)
at com.atlassian.jira.issue.index.DefaultIndexManager.reIndexIssues(DefaultIndexManager.java:109)
at com.atlassian.jira.issue.index.DefaultIndexManager.reIndexAll(DefaultIndexManager.java:71)
at com.atlassian.jira.web.action.admin.IndexAdminImpl.doReindex(IndexAdminImpl.java:208)
at com.atlassian.jira.web.action.admin.IndexAdminImpl.doActivate(IndexAdminImpl.java:159)
at com.atlassian.jira.web.action.admin.IndexAdminImpl.doReindex(IndexAdminImpl.java:202)
We can fix this by imposing the date length limit that Lucene imposes:
// make date strings long enough to last a millenium
private static int DATE_LEN = Long.toString(1000L*365*24*60*60*1000, Character.MAX_RADIX).length();
....
if (s.length() > DATE_LEN)
throw new RuntimeException("time too late");
The workaround is to log into your database and use raw sql to locate the issues.
You can probably manipulate the values in sql too, but you can individually browse to the issue in Jira (once you know the issue id from the sql query above) and edit the value to a value that doesn't produce errors.
My setup is Jira runs under Tomcat 5.0 and uses mysql as the database. Your environment may differ but the basic steps are the same:
Logon to the box and read up on how to configure a database in Tomcat 5.0. This will tell you the username/password needed.
Logon to the mysql database:
Run
mysql> select id, pkey, duedate from jiraissue where duedate > '2050-01-01' order by pkey;
This will list anything due after 2050 and you can systematically work your way through any keys that are dodgy in rendering because of large date values.