SourceForge.net Logo
Main Overview Wiki Issues Forum Build Fisheye
Issue Details (XML | Word | Printable)

Key: CMP-596
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Shay Banon
Reporter: Michael Lossos
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Compass

Using mmap in a Spring compass.engine.connection causes IOException and Compass fails to start

Created: 27/Mar/08 03:37 AM   Updated: 10/Oct/10 05:11 PM
Component/s: Compass::Core
Affects Version/s: 2.0.0 M3
Fix Version/s: 2.0.0 RC1

Environment:
Compass-2.0.0M2 nightly 59
Spring


 Description  « Hide
I'm specifying my compass.engine.connection = "mmap://C:/my_index" in an attempt to use MMapDirectory.
Compass's DefaultLuceneSearchEngineStore.configure() uses the connection protocol to determine which FS store to instantiate. However, FSDirectoryStore.configure() only strips protocols of "file://" when it should also strip "mmap://" or whatever else when determining the indexPath. Because it does not strip the protocol for mmap, it then attempts to open a File( "mmap://C:/my_index" ) which fails with the exception below.

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'compass' defined in class path resource [org.photogoodness.client.core_spring.xml]: Invocation of init method failed; nested exception is org.compass.core.engine.SearchEngineException: Failed to open directory for path [indexversionsearchentry]; nested exception is java.io.IOException: The filename, directory name, or volume label syntax is incorrect
Caused by: org.compass.core.engine.SearchEngineException: Failed to open directory for path [indexversionsearchentry]; nested exception is java.io.IOException: The filename, directory name, or volume label syntax is incorrect
java.io.IOException: The filename, directory name, or volume label syntax is incorrect
at java.io.WinNTFileSystem.canonicalize0(Native Method)
at java.io.Win32FileSystem.canonicalize(Win32FileSystem.java:396)
at java.io.File.getCanonicalPath(File.java:559)
at org.apache.lucene.store.FSDirectory.getDirectory(FSDirectory.java:168)
at org.apache.lucene.store.FSDirectory.getDirectory(FSDirectory.java:139)
at org.compass.core.lucene.engine.store.FSDirectoryStore.open(FSDirectoryStore.java:70)
at org.compass.core.lucene.engine.store.DefaultLuceneSearchEngineStore.openDirectory(DefaultLuceneSearchEngineStore.java:282)
at org.compass.core.lucene.engine.store.DefaultLuceneSearchEngineStore.indexExists(DefaultLuceneSearchEngineStore.java:377)
at org.compass.core.lucene.engine.store.DefaultLuceneSearchEngineStore.verifyIndex(DefaultLuceneSearchEngineStore.java:444)
at org.compass.core.lucene.engine.store.DefaultLuceneSearchEngineStore.verifyIndex(DefaultLuceneSearchEngineStore.java:440)
at org.compass.core.lucene.engine.store.DefaultLuceneSearchEngineStore.verifyIndex(DefaultLuceneSearchEngineStore.java:432)
at org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager$4.doInTransaction(DefaultLuceneSearchEngineIndexManager.java:136)
at org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager$4.doInTransaction(DefaultLuceneSearchEngineIndexManager.java:134)
at org.compass.core.impl.DefaultCompass$CompassTransactionContext.execute(DefaultCompass.java:310)
at org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager.verifyIndex(DefaultLuceneSearchEngineIndexManager.java:133)
at org.compass.core.impl.DefaultCompass.<init>(DefaultCompass.java:145)
at org.compass.core.impl.DefaultCompass.<init>(DefaultCompass.java:107)
at org.compass.core.impl.DefaultCompass.<init>(DefaultCompass.java:100)
at org.compass.core.config.CompassConfiguration.buildCompass(CompassConfiguration.java:232)
at org.compass.spring.LocalCompassBean.newCompass(LocalCompassBean.java:336)
at org.compass.spring.LocalCompassBean.afterPropertiesSet(LocalCompassBean.java:326)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1198)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1167)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:427)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:285)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:122)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.ja



 All   Comments   Change History      Sort Order: Ascending order - Click to sort in descending order
Michael Lossos added a comment - 28/Mar/08 01:18 PM
Thanks for the fix! (Verified with CMPTRK-NIGHTLY build-69)

Shay Banon added a comment - 28/Mar/08 01:44 PM
No problem. Should not have happened in the first place ... .

Razan Abbass added a comment - 10/Oct/10 05:11 PM