[
https://issues.apache.org/jira/browse/LUCENE-5673?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13998678#comment-13998678
]
Uwe Schindler commented on LUCENE-5673:
---------------------------------------
Hi,
this is indeed a problem. The existence of the OOM somewhere in the stack trace
confuses users, because whenever they see OOM, they start to raise -Xmx and by
that make the problem worse.
The behaviour is correct from the API, because the javadocs of FileChannel.map
specify that it throws IOException when mapping fails. But the implementation
in OpenJDK is bullshit:
We should do something like this:
{code:java}
...catch (IOException ioe) {
if (ioe.getCause() instanceof OutOfMemoryError) {
throw new IOException("Memory mapping failed. There might not be enough
unfragmented address space available to mmap the index file: " +
ioe.getCause().getMessage()); // without root cause!!!
}
throw ioe;
}
{code}
By that the user just gets a good IOException not referring to OOM.
Indeed the OOM is the real bug, because its caused by OutOfAddressSpaceError
and not OutOfMemoryError :-)
> MmapDirectory shouldn't pass along OOM wrapped as IOException
> -------------------------------------------------------------
>
> Key: LUCENE-5673
> URL: https://issues.apache.org/jira/browse/LUCENE-5673
> Project: Lucene - Core
> Issue Type: Bug
> Reporter: Robert Muir
> Attachments: LUCENE-5673.patch
>
>
> The bug here is in java (not MMapDir), but i think we shoudl do something.
> Users get confused when they configure their JVM to trigger something on OOM,
> and then see "OutOfMemoryError: Map Failed": but their trigger doesnt fire.
> Thats because in the jdk, when it maps files it catches OutOfMemoryError,
> asks for a garbage collection, sleeps for 100 milliseconds, then tries to map
> again. if it fails a second time it wraps the OOM in a generic IOException.
> I think we should add a try/catch to our filechannel.map
--
This message was sent by Atlassian JIRA
(v6.2#6252)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]