[hibernate-issues] [Hibernate-JIRA] Commented: (HSEARCH-998) Unlock at startup using SimpleFSLockFactory

David Polo (JIRA) noreply at atlassian.com
Fri Dec 2 04:29:20 EST 2011


    [ http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-998?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=44494#comment-44494 ] 

David Polo commented on HSEARCH-998:
------------------------------------

This line is a mistake:

IndexReader indexReader = fullTextSession.getSearchFactory()
.getIndexReaderAccessor().open("");

I leaved it as a mistake, sorry.

> Unlock at startup using SimpleFSLockFactory
> -------------------------------------------
>
>                 Key: HSEARCH-998
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-998
>             Project: Hibernate Search
>          Issue Type: Bug
>          Components: massindexer
>    Affects Versions: 4.0.0.CR2
>         Environment: Java 1.6, Hibernate Search 4.0.0.CR2 on Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bits
>            Reporter: David Polo
>              Labels: hibernate
>
> I'm using SimpleFSLockFactory and I'm getting this exception after an unexpected shutdown of the application during indexation:
> org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out
> The workaround consists in executing this code at startup in order to unlock the indexes:
>       FullTextSession fullTextSession = Search.getFullTextSession(hbSession);
>       MutableSearchFactory searchFactory = (MutableSearchFactory) fullTextSession
>             .getSearchFactory();
>       IndexReader indexReader = fullTextSession.getSearchFactory()
>             .getIndexReaderAccessor().open("");
>       Map<Class<?>, EntityIndexBinder> indexBindingsForEntity = searchFactory
>             .getIndexBindingForEntity();
>       for (EntityIndexBinder eib : indexBindingsForEntity.values()) {
>          IndexManager[] indexManagers = eib.getIndexManagers();
>          DirectoryBasedIndexManager indexManager = (DirectoryBasedIndexManager) indexManagers[0];
>          Directory indexDirectory = indexManager.getDirectoryProvider()
>                .getDirectory();
>          if (IndexWriter.isLocked(indexDirectory)) {
>             IndexWriter.unlock(indexDirectory);
>          }
>       }
> I have a single application that executes this code at startup so I think it's safe to unlock the Directory at this time.
> I'm doing this because I'm using SimpleFSLockFactory and it leaves write.lock files.
> I need to unlock at startup because I think using NativeFSLockFactory is not an option for me (I'm using NFS).
> It will be a good thing if Hibernate Search have an "unlock at startup" option. It could be used only in cases like this (not all cases!).
> In Solr there is an option:
> <unlockOnStartup>true</unlockOnStartup>

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list