diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/DefaultFullTextIndexer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/DefaultFullTextIndexer.java index 12f83638e91846e96d9037c1085c29da63162b1c..94fa823acb3ff3051c75ffce44d6e9bffa7ac79c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/DefaultFullTextIndexer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/DefaultFullTextIndexer.java @@ -76,18 +76,33 @@ final class DefaultFullTextIndexer implements IFullTextIndexer { index++; final Object object = results.get(0); - if (operationLog.isDebugEnabled()) - { - operationLog.debug(String.format("Indexing entity '%s'.", object)); - } - fullTextSession.index(object); - if (batchSize > 0 && index % batchSize == 0) - { - hibernateSession.clear(); - } + indexEntity(hibernateSession, fullTextSession, index, object); } transaction.commit(); operationLog .info(String.format("%d '%s' have been indexed.", index, clazz.getSimpleName())); } + + private <T> void indexEntity(final Session hibernateSession, + final FullTextSession fullTextSession, int index, T object) + { + if (operationLog.isDebugEnabled()) + { + operationLog.debug(String.format("Indexing entity '%s'.", object)); + } + try + { + fullTextSession.index(object); + } catch (Exception e) + { + operationLog.error("Error while indexing the object " + object + ": " + e.getMessage() + + ". Indexing will be continued."); + } + if (batchSize > 0 && index % batchSize == 0) + { + fullTextSession.flushToIndexes(); + hibernateSession.clear(); + } + } + }