Where do you compile Lucene.Net? If on mono, try compiling on
windows with
VS because I also have observed some
strange behaviours after compiling on mono ( since it was far long
ago, I
don't remember what it is was anymore).
DIGY
-----Original Message-----
From: Arne Claassen
[mailto:ar...@mindtouch.com]
Sent: Friday, April 02, 2010 1:29 AM
To: lucene-net-dev@lucene.apache.org
Subject: Lucene.net 2.9.1 and mono
Hi, i'm new to the list, so if this falls under FAQ, please just point
me in the right direction.
We've been using Lucene.net 1.9.1 for quite a while and I wanted to
finally get us current with lucene, so i incorporated 2.9.1 into our
code. Unfortunately, 2.9.1 crashes under mono 2.4. Has anyone else
tried it on Mono? I downgraded to 2.4.0 which does work but has
problems with unclean shutdown with SimpleFSLock on windows and linux,
that NativeFSLock in 2.9.1 does not exhibit.
Before i go into the 2.9.1 issues in detail, in 2.40 is there a best
practice for cleaning up lingering locks for SimpleFSLock other than
manually looking for the lock file and clearing it out at startup?
Anyway, here are the 2.9.1 issues i came across. Being mono only
issues i don't know if this helpful, but i thought i'd see if this
rings a bell.
When no index exists yet, IndexWriter will die and completely take
down the process with this:
** ERROR:(mini.c:3624):mini_method_compile: assertion failed: (tblock-
native_offset)
Stacktrace:
at Lucene.Net.Index.SegmentInfos.FinishCommit
(Lucene.Net.Store.Directory)<0xffffffff>
at Lucene.Net.Index.SegmentInfos.FinishCommit
(Lucene.Net.Store.Directory)<0x000e4>
at Lucene.Net.Index.SegmentInfos.Commit
(Lucene.Net.Store.Directory)<0x00024>
at Lucene.Net.Index.IndexWriter.Init
(Lucene
.Net
.Store
.Directory
,Lucene
.Net
.Analysis
.Analyzer
,bool
,bool
,Lucene
.Net
.Index.IndexDeletionPolicy,bool,int,Lucene.Net.Index.DocumentsWriter/
IndexingChain,Lucene.Net.Index.IndexCommit)<0x001a3>
at Lucene.Net.Index.IndexWriter.Init
(Lucene
.Net
.Store
.Directory
,Lucene
.Net
.Analysis
.Analyzer
,bool
,Lucene
.Net
.Index.IndexDeletionPolicy,bool,int,Lucene.Net.Index.DocumentsWriter/
IndexingChain,Lucene.Net.Index.IndexCommit)<0x00076>
at Lucene.Net.Index.IndexWriter..ctor
(Lucene
.Net
.Store
.Directory,Lucene.Net.Analysis.Analyzer,Lucene.Net.Index.IndexWriter/
MaxFieldLength)<0x001c2>
at Repro.Program.Main (string[])<0x00089>
at (wrapper runtime-invoke)
Repro.Program.runtime_invoke_void_object (object,intptr,intptr,intptr)
<0xffffffff>
If an index already exists both IndexWriter and IndexSearcher will
throw an exception (without taking down the process this time) for
NIOFSDirectory:
Unhandled Exception: System.NullReferenceException: Object reference
not set to an instance of an object
at Lucene.Net.Store.NIOFSDirectory+NIOFSIndexInput.ReadInternal
(System.Byte[] b, Int32 offset, Int32 len) [0x00000]
at Lucene.Net.Store.BufferedIndexInput.Refill () [0x00000]
at Lucene.Net.Store.BufferedIndexInput.ReadByte () [0x00000]
at Lucene.Net.Store.IndexInput.ReadInt () [0x00000]
at Lucene.Net.Index.SegmentInfos+FindSegmentsFile.Run
(Lucene.Net.Index.IndexCommit commit) [0x00000]
at Lucene.Net.Index.DirectoryReader.Open
(Lucene.Net.Store.Directory directory, IndexDeletionPolicy
deletionPolicy, Lucene.Net.Index.IndexCommit commit, Boolean readOnly,
Int32 termInfosIndexDivisor) [0x00000]
at Lucene.Net.Index.IndexReader.Open (Lucene.Net.Store.Directory
directory, IndexDeletionPolicy deletionPolicy,
Lucene.Net.Index.IndexCommit commit, Boolean readOnly, Int32
termInfosIndexDivisor) [0x00000]
at Lucene.Net.Index.IndexReader.Open (Lucene.Net.Store.Directory
directory) [0x00000]
at Lucene.Net.Search.IndexSearcher..ctor
(Lucene.Net.Store.Directory directory) [0x00000]
at (wrapper remoting-invoke-with-check)
Lucene.Net.Search.IndexSearcher:.ctor (Lucene.Net.Store.Directory)
at Repro.Program.Main (System.String[] args) [0x00000]
I've also come across lock timeout with NativeFSLock on mono, but
can't figure out how to repro this.
cheers,
Arne Claassen
MindTouch
San Diego, CA
http://twitter.com/sdether