protected boolean removeLRU(final AbstractLinkedMap.LinkEntry linkEntry)
{
synchronized (LRUFilesCache.this)
{
AbstractFileObject file = (AbstractFileObject) linkEntry.getValue();
// System.err.println(">>> " + size() + " check removeLRU:" + linkEntry.getKey().toString());
if (file.isAttached() || file.isContentOpen())
{
// do not allow open or attached files to be removed
// System.err.println(">>> " + size() + " VETO removeLRU:" + linkEntry.getKey().toString() + " (" + file.isAttached() + "/" + file.isContentOpen() + ")");
return false;
}
// System.err.println(">>> " + size() + " removeLRU:" + linkEntry.getKey().toString());
if (super.removeLRU(linkEntry))
{
try
{
// force detach
file.close();
}
catch (FileSystemException e)
{
VfsLog.warn(getLogger(), log, Messages.getString("vfs.impl/LRUFilesCache-remove-ex.warn"), e);
}