OpenGrok History Cache Null Ptr Исключение
При индексации он пытается создать кэш истории для репозитория Perforce и завершается неудачей со следующим исключением NULL ptr:
2015-01-16 10:30:32.178-0800 INFO t1 HistoryGuru.createCacheReal: Creating historycache for 1 repositories
2015-01-16 10:30:32.179-0800 INFO t22 HistoryGuru.createCache: Creating historycache for /local2/mnt/workspace/opengrok/src (PerforceRepository)
2015-01-16 10:30:32.181-0800 FINE t22 Executor.exec: Executing command [/pkg/qct/software/p4/p4, dirs, *] in directory /local2/mnt/workspace/opengrok/src
2015-01-16 10:30:32.458-0800 FINE t22 Executor.exec: Finished command [/pkg/qct/software/p4/p4, dirs, *] in directory /local2/mnt/workspace/opengrok/src
2015-01-16 10:30:32.459-0800 FINE t22 Executor.exec: Executing command [p4, changes, -t, ...] in directory /local2/mnt/workspace/opengrok/src
2015-01-16 10:30:39.230-0800 FINE t22 Executor.exec: Finished command [p4, changes, -t, ...] in directory /local2/mnt/workspace/opengrok/src
2015-01-16 10:30:39.366-0800 FINE t22 FileHistoryCache.store: Storing history for repo /local2/mnt/workspace/opengrok/src
2015-01-16 10:30:39.369-0800 WARNING t22 FileHistoryCache.storeLatestCachedRevision: cannot write latest cached revision to file: null
2015-01-16 10:30:39.369-0800 WARNING t22 HistoryGuru.createCache: An error occured while creating cache for /local2/mnt/workspace/opengrok/src (PerforceRepository)
java.lang.NullPointerException
at org.opensolaris.opengrok.history.FileHistoryCache.storeLatestCachedRevision(FileHistoryCache.java:595
Я проверил, что у пользователя есть права на запись в $OPENGROK_INSTANCE_BASE/data. Есть идеи, что еще проверить или что может происходить?
Версия OpenGrok: 0.12.1.1 cmd для индексирования:
OPENGROK_TAG=1 OPENGROK_VERBOSE=1 OPENGROK_REMOTE_REPOS_OFF=0 OPENGROK_TOMCAT_CASE=/usr/share/tomcat7 OPENGROK_INSTANCE_BASE=/local2/mnt/workspace/opengrok ./OpenGrok index /local2/mnt/workspace/opengrok/src/
1 ответ
Решение
Оказывается, это ошибка в OpenGrok. Смотрите ветку: https://github.com/OpenGrok/OpenGrok/issues/878
Короче говоря, src/org/opensolaris/opengrok/history/FileHistoryCache.java нуждается в проверке NULL ptr.
@@ -592,7 +592,9 @@ private void storeLatestCachedRevision(Repository repository, String rev) {
ex.getCause());
} finally {
try {
- writer.close();
+ if (writer != null) {
+ writer.close();
+ }
} catch (IOException ex) {
logger.log(Level.INFO, "cannot close file: " + ex);
}
https://github.com/OpenGrok/OpenGrok/commit/0dbb0e366b3798ac18d1bfc010a1985bce75f071
Почему средство записи файлов NULL, во-первых, это другой вопрос...