From: Adam R. <ad...@ex...> - 2017-04-03 13:28:21
|
> I don't see much difference with 3.1.1: this version, too, starts to throw > the IO exception. Unfortunately, I haven't been able to isolate an exact > trigger: sometimes it happens right after start-up; sometimes it takes some > time before the error comes up. I'm not even sure anymore whether retrieval > of binary files is a necessary error condition; I do notice, however, that > anything using request:get-data() is affected (hence, the dashboard and > eXide webapps). > > I'm fully aware it may be a complicating factor that I have a single Tomcat > container serving multiple eXist webapps. Contrary to what I said earlier, > it seems that once one webapp is hitting the error, all of them are. The TemporaryFileManager is a Java Singleton, which means that there will only be one of these per JVM. So running multiple eXist's in the same JVM (i.e. Tomcat) will cause them to all use a single TemporaryFileManager. So if you get a problem, they will all see the problem. > Yet, it seems that changing the class for binary manager in conf.xml to: > > <binary-manager> > <cache > class="org.exist.util.io.MemoryMappedFileFilterInputStreamCache"/> > </binary-manager> > > ...seems to avoid the error (for eXist versions from 3.0 onwards). Which is > quite a relief ;-). I would be careful here. In the past issues were reported around MemoryMappedFileFilterInputStreamCache, which is why FileFilterInputStreamCache is now the default in conf.xml. MemoryMappedFileFilterInputStreamCache used to be the default and theoretically offers better performance. > So, although the exact circumstances are unclear, there seems to be an > indication that org.exist.util.io.FileFilterInputStreamCache is somehow > 'vulnerable' to a condition triggering an IO exception. I hope this can > contribute at least something... I would really love to get a mechanism for reproducing your issues, so that we could solve them... -- Adam Retter eXist Developer { United Kingdom } ad...@ex... irc://irc.freenode.net/existdb |