Sun Java Bugs
Sometimes Lucene runs amok of bugs in Sun's Java implementation. In certain cases we whittle it down to a small test case, open an issue with Sun, and hopefully Sun fixes it. In other cases we know the bug is in the JRE but we haven't narrowed it enough to open a bug with Sun. Sometimes we can work out a simple workaround in Lucene.
We try to open a Lucene mirror bug to provide details on how Lucene is affected, iterate on a compact test case for Sun, etc.
If you are affected by one of these issues that Sun has yet to accept or resolve, or simply have some spare votes, please consider adding your vote to the bug (on Sun's bug page):
Sun bug |
Lucene mirror bug |
Impact to Lucene |
State, Priority |
Workaround |
NIOFSDirectory has very poor performance on Windows |
Accepted, Low |
Use FSDirectory or MMapDirectory on Windows |
||
You hit a false OutOfMemoryException when loading norms in an index with many docs |
Accepted, Low |
Locally patch Lucene to load large contiguous byte sequences in chunks |
||
Index corruption |
Fixed as of 1.6.0_10, High |
Lucene code base has a workaround in it |
||
MMapDirectory won't close files until GC (higher transient disk usage than other FSDir); MMapDirectory returns 0 bytes when used for read/write access in remote (SMB/CIFS) mount |
Cause Known, Low |
Use a different Directory implementation |
||
(No sun bug yet) |
SEGV during indexing, with Java 1.6 64 bit |
(No compact test case yet) |
None known |
|
(No sun bug yet) |
On 64 bit JREs, reading from files may hang (??) |
(Still characterizing) |
None known |
|
No impact as of 3.1/4.0 -- we now avoid calling new String(int[], int, int) |
Fix Delivered, Bug |
|
||
Fix Delivered, High |
xml-query-parser's XSLT transforms fail under some locales |
Upgrade to Java 6, use a different JRE vendor, plug in an alternate, more up-to-date XSL engine like Apache XALAN, or set system property telling TransformerFactory to use the non byte-code generating bundled XSL engine in Java 5 |
||
readVInt() returns wrong results |
not sure |
Lucene code base has a workaround in it |
||
readVInt() returns wrong results |
8-Fix Available, Medium |
use Java 6 or Java 7u1 |
||
Porter Stemmer crashes JRE |
8-Fix Available, Low |
-XX:-UseLoopPredicate or Java 7u1 |
||
BreakIterators (e.g. in analyzers) crash on certain inputs |
Accepted, Low |
Lucene code base has a workaround in it |
||
Concurrent Classes suffer from a race in LockSupport park() arising from weak memory models |
Fixed, High |
Use -XX:+UseMembar if you are running on a JVM < 1.6u18 see this writeup for details |