Long story but we managed to create a 'ghost' index for an issue which screwed up the searches by causing a NullPointerException.
To fix the indexes we re-indexed, which we often do. The re-index usually takes around 13 minutes. However this time it chugged along happily up to 95% as usual and then sat there, not as usual, no error messages in the logs, only the 'i18n problem: id defined by localised value: Refresh' message each time my browser page refreshed.
After 10 minutes of sitting at 95% I restarted the JIRA service (ouch! but didn't know what else to do and our users needed to get back in).
JIRA started OK, the bad index had been fixed and searches for filters and dashboards also seem to be working, but the 're-index recommended' message still appears on the admin pages for a custom field change made 2 days ago.
I've run the Integrity Checker which found no errors. I've checked Java Melody (we've installed the plugin) which indicates we were OK for memory and DB connections.
So what should I do now? I don't like leaving JIRA incompletely re-indexed but I'm wary of re-indexing again in case it gets stuck again, and if the next re-index is likely to go on indefinitely I'll have to get the down-time authorised first. I don't even know if the re-indexing would eventually finish if I wait long enough (how long is long enough???). Anyone else seen this? Is there anything special about 95% that might hint at what's going on? We're running 4.0.2.