openlibraryenvironment/gokb

NullPointerException bei ESUpdateJob

Closed this issue · 5 comments

Das Server-Log der DEV-Instanz zeigt mehrere NPE's der folgenden Art (gefilterter Stacktrace):

java.lang.NullPointerException: Cannot get property 'name' on null object
at org.codehaus.groovy.runtime.NullObject.getProperty(NullObject.java:60)
at org.codehaus.groovy.runtime.InvokerHelper.getProperty(InvokerHelper.java:190)
at org.codehaus.groovy.runtime.callsite.NullCallSite.getProperty(NullCallSite.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:299)
at org.gokb.FTUpdateService$__tt__doFTUpdate_closure13.doCall(FTUpdateService.groovy:335)
at org.gokb.FTUpdateService$__tt__doFTUpdate_closure13$doCall.call(Unknown Source)
at org.gokb.FTUpdateService.$tt__updateES(FTUpdateService.groovy:456)
at org.gokb.FTUpdateService$_updateES_closure3.doCall(FTUpdateService.groovy)
at org.gokb.FTUpdateService.updateES(FTUpdateService.groovy)
at org.gokb.FTUpdateService$updateES$0.callCurrent(Unknown Source)
at org.gokb.FTUpdateService.$tt__doFTUpdate(FTUpdateService.groovy:328)
at org.gokb.FTUpdateService$_doFTUpdate_closure2.doCall(FTUpdateService.groovy)
at org.gokb.FTUpdateService.doFTUpdate(FTUpdateService.groovy)
at org.gokb.FTUpdateService$doFTUpdate.callCurrent(Unknown Source)
at org.gokb.FTUpdateService.$tt__updateFTIndexes(FTUpdateService.groovy:34)
at org.gokb.FTUpdateService$_updateFTIndexes_closure1.doCall(FTUpdateService.groovy)
at org.gokb.FTUpdateService.updateFTIndexes(FTUpdateService.groovy)
at org.gokb.ESUpdateJob.execute(ESUpdateJob.groovy:20)

DOD :

  • Ursache der Exception ist behoben.
  • Neue Version ist deployt.
  • ESUpdate läuft ohne diese NPE.

Das hatte ich letztens im Chat schon angemäkelt; ein Neuaufsetzen des lokalen Indexes hat nichts bewirkt.

Dieser Fehler beruht darauf, dass hier ein TIPP ohne verknüpften Titel existiert. Dies wiederum kann mehrere Ursachen haben, die nachträglich schwer nachzuvollziehen sind (Fehler beim Anlegen/Titel per expunge gelöscht/Combo manuell gelöscht). Um solche "verwaisten" TIPPs zu löschen gibt es im alten UI eine Admin-Routine ("Expunge Orphaned TIPPs"), die das Problem dann beheben sollte.

@hornmo Können wir an geeigneter Stelle einen Hinweis auf "Expunge Orphaned TIPPs" generieren? Wenigstens als Log-Message z. B.? Es muss nur eindeutig sein, also der Hinweis sollte nicht durch andere Exceptions generiert werden.

Da dies ein eindeutiger Fehler ist, können wir das auf jeden Fall auch dementsprechend abfangen. Vielleicht sollten wir diese Fälle aber auch einfach per Routine gleich automatisch aufräumen.

Bei mir lokal hat sich der Fehler durch Auslösen der Methode in der Tat verflüchtigt.