@Override public void recyclePage(long id) throws IOException { checkId(id); CommitLock.Shared shared = mCommitLock.acquireShared(); try { try { mPageManager.recyclePage(id); } catch (IOException e) { mPageManager.deletePage(id); } } catch (IOException e) { throw e; } catch (Throwable e) { throw closeOnFailure(e); } finally { shared.release(); } }