From: Robin Rosenberg Date: Tue, 17 Mar 2009 22:59:32 GMT Subject: Re: [JGIT PATCH 3/4] Cap the number of open files in the WindowCache Message-ID: <200903172359.32595.robin.rosenberg.lists@dewire.com> In-Reply-To: <1237252570-8596-4-git-send-email-spearce@spearce.org> tisdag 17 mars 2009 02:16:09 skrev "Shawn O. Pearce" : > If we detect a file open failure while opening a pack we halve > the number of permitted open files and try again, until we reach > a lower bound of 16 open files. Needing to go lower may indicate > a file descriptor leak in the host application. ... > + TRY_OPEN: for (;;) { > + try { > + openFileCount++; > + releaseMemory(); > + runClearedWindowQueue(); > + wp.openCount = 1; > + wp.cacheOpen(); > + break; > + } catch (IOException ioe) { > + openFileCount--; > + if ("Too many open files".equals(ioe.getMessage()) > + && maxFileCount > 16) { The output of getMessage isn't that simple to interpret. Here it is filename+" (Too many files open)", and on other platforms it is probably something else. This goes for the message part of most exceptions thrown from platform specific code like file i/o socket i/o etc. The type of exception is a FileNotFoundException, btw. I wonder whether your code works on any platform.