簡體   English   中英

帶有grails可搜索插件的apache lucene索引文件的默認路徑在哪里?

[英]Where is the default path to the apache lucene index file with grails searchable plugin?

我在grails 1.3.7項目中使用了可搜索的插件。 我的項目運行良好,直到Macbooks硬盤驅動器已滿,並且osx發出了有關內存問題的消息,並刪除了一些文件(tmp等)(此后,我刪除了一些電影並獲得了10GB以上的可用空間)。 我沒有更改源代碼,但是當我現在啟動grails應用程序時,出現以下異常:

Running Grails application..
Configuring Spring Security ...
Configuring SpringSocial Facebook
2011-11-18 01:54:16,804 [main] ERROR context.GrailsContextLoader  - Error executing        bootstraps: Failed to retrieve transaction locks; nested exception is java.io.IOException:    Permission denied
org.compass.core.engine.SearchEngineException: Failed to retrieve transaction locks; nested exception is java.io.IOException: Permission denied
java.io.IOException: Permission denied
at java.io.UnixFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:883)
at org.apache.lucene.store.SimpleFSLock.obtain(SimpleFSLockFactory.java:144)
at org.apache.lucene.store.Lock.obtain(Lock.java:73)
at org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager$6.doInTransaction(DefaultLuceneSearchEngineIndexManager.java:203)
at org.compass.core.impl.DefaultCompass$CompassTransactionContext.execute(DefaultCompass.java:423)
at org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager.doOperate(DefaultLuceneSearchEngineIndexManager.java:197)
at org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager.doReplaceIndex(DefaultLuceneSearchEngineIndexManager.java:266)
at org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager.replaceIndex(DefaultLuceneSearchEngineIndexManager.java:261)
at org.compass.gps.impl.SingleCompassGps.doIndex(SingleCompassGps.java:118)
at org.compass.gps.impl.AbstractCompassGps.index(AbstractCompassGps.java:154)
at org.compass.gps.impl.AbstractCompassGps.index(AbstractCompassGps.java:128)
at grails.plugin.searchable.internal.compass.CompassGpsUtils.index(CompassGpsUtils.java:49)
at grails.plugin.searchable.internal.compass.CompassGpsUtils$index.call(Unknown Source)
at SearchableGrailsPlugin$_closure3.doCall(SearchableGrailsPlugin.groovy:158)
at org.grails.tomcat.TomcatServer.start(TomcatServer.groovy:212)
at grails.web.container.EmbeddableServer$start.call(Unknown Source)
at _GrailsRun_groovy$_run_closure5_closure12.doCall(_GrailsRun_groovy:158)
at _GrailsRun_groovy$_run_closure5_closure12.doCall(_GrailsRun_groovy)
at _GrailsSettings_groovy$_run_closure10.doCall(_GrailsSettings_groovy:280)
at _GrailsSettings_groovy$_run_closure10.call(_GrailsSettings_groovy)
at _GrailsRun_groovy$_run_closure5.doCall(_GrailsRun_groovy:149)
at _GrailsRun_groovy$_run_closure5.call(_GrailsRun_groovy)
at _GrailsRun_groovy.runInline(_GrailsRun_groovy:116)
at _GrailsRun_groovy.this$4$runInline(_GrailsRun_groovy)
at _GrailsRun_groovy$_run_closure1.doCall(_GrailsRun_groovy:59)
at RunApp$_run_closure1.doCall(RunApp:33)
at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:381)
at gant.Gant$_dispatch_closure7.doCall(Gant.groovy:415)
at gant.Gant$_dispatch_closure7.doCall(Gant.groovy)
at gant.Gant.withBuildListeners(Gant.groovy:427)
at gant.Gant.this$2$withBuildListeners(Gant.groovy)
at gant.Gant$this$2$withBuildListeners.callCurrent(Unknown Source)
at gant.Gant.dispatch(Gant.groovy:415)
at gant.Gant.this$2$dispatch(Gant.groovy)
at gant.Gant.invokeMethod(Gant.groovy)
at gant.Gant.executeTargets(Gant.groovy:590)
at gant.Gant.executeTargets(Gant.groovy:589)
Application context shutting down...
Application context shutdown.

我認為文件系統中的lucene索引有問題,但是在哪里可以找到它? lucene索引文件夾或文件存儲在哪里? 我沒有更改插件配置。

看起來是某種Unix / OS X權限問題。 當Searchable / Lucene啟動並嘗試創建索引時,它要做的第一件事是在索引目錄中創建一個鎖定文件。 從堆棧跟蹤來看,這似乎是失敗的原因。

Searchable.groovy文件是定義索引路徑的位置; 有可能它已在environment塊中被覆蓋,甚至在Config.groovy也可能被覆蓋。

grails run-app以您的用戶身份運行Grails,因此該問題與以其他用戶身份運行Tomcat沒有任何關系。

根據默認的conf文件

/**
 * The location of the Compass index
 *
 * Examples: "/home/app/compassindex", "ram://app-index" or null to use the default
 *
 * The default is "${user.home}/.grails/projects/${app.name}/searchable-index/${grails.env}"
 */

因此,除非您進行了更改(您說沒有更改),否則我將看看

~/.grails/projects/${app.name}/searchable-index/${grails.env}

我的tomcat安裝在$ {user.home} /。grails / projects / $ {app.name} / searchable-index中,請記住tomcat進程可能在與您不同的用戶下運行,所以我運行了“ sudo nautilus才能看到它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM