RAMDirectory Not Correctly Serilizing -------------------------------------
Key: LUCENENET-174 URL: https://issues.apache.org/jira/browse/LUCENENET-174 Project: Lucene.Net Issue Type: Bug Environment: Lucene.Net version 2.1 Windows XP 64Bit SP2 Visual Studio 2008 SP1 DOTNET 3.5 SP1 NCache Developer 3.4 Reporter: Philip Todd Priority: Minor Greetings. Firstly a big thank you for everyones efforts with Lucene and Lucene.Net. Your efforts are much appreciated. Background: I have created a server application which allows searching across many companies. In order to achieve this I have utilized Lucene.Net for indexing and searching and NCache from Alachisoft for caching the information server-side. As the Lucene index takes a fair amount of time to create - I am also caching the RAMDirectory. The caching requires all objects to be serialized before storage. The issue: After retrieving the RAMDirectory from cache (after de-serializing) I attempted to create a new IndexWriter object to allow adding more items to the index: oDirectory = CacheConfig.DeCacheSupplierIndex("SupplierIndex" & Supplier.BuyerNo) analyzer = New StandardAnalyzer() oIndexWriter = New IndexWriter(oDirectory, analyzer, False) The attempt to create the IndexWriter resulted in a NullReference exception at: at Lucene.Net.Store.Directory.MakeLock(String name) at Lucene.Net.Index.IndexWriter.Init(Directory d, Analyzer a, Boolean create, Boolean closeDir) at Lucene.Net.Index.IndexWriter..ctor(Directory d, Analyzer a) After debugging the Lucene source I discovered the exception was caused by the lockFactory definition in the Directory class (Directory.cs line 49) having a [NonSerialized] attribute. This caused the lockFactory to be null after serialization. Fix: Removed the [NonSerialized] attribute. Added a [Serializable] attribute to SingleInstanceLockFactory (SingleInstanceLockFactory.cs line 35) Added a [Serializable] attribute to LockFactory (LockFactory.cs line 28) This allowed me to proceed. I have not thoroughly tested the changes. I can provide the source code if required. As we will very likely upgrade to future versions of Lucene - I would like to have any fix incorporated into the Lucene source repository. Let me know what I should do. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.