You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Michael Han (JIRA)" <ji...@apache.org> on 2016/09/09 05:51:20 UTC
[jira] [Created] (ZOOKEEPER-2572) Potential resource leak in
FileTxnLog.truncate
Michael Han created ZOOKEEPER-2572:
--------------------------------------
Summary: Potential resource leak in FileTxnLog.truncate
Key: ZOOKEEPER-2572
URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2572
Project: ZooKeeper
Issue Type: Bug
Components: server
Affects Versions: 3.5.2, 3.4.9
Reporter: Michael Han
Fix For: 3.4.10, 3.5.3
In FileTxnLog.truncate, we have:
{code}
public boolean truncate(long zxid) throws IOException {
FileTxnIterator itr = null;
try {
itr = new FileTxnIterator(this.logDir, zxid);
PositionInputStream input = itr.inputStream;
if(input == null) {
throw new IOException("No log files found to truncate! This could " +
"happen if you still have snapshots from an old setup or " +
"log files were deleted accidentally or dataLogDir was changed in zoo.cfg.");
}
long pos = input.getPosition();
// now, truncate at the current position
RandomAccessFile raf=new RandomAccessFile(itr.logFile,"rw");
raf.setLength(pos);
raf.close();
while(itr.goToNextLog()) {
if (!itr.logFile.delete()) {
LOG.warn("Unable to truncate {}", itr.logFile);
}
}
} finally {
close(itr);
}
return true;
}
{code}
{{raf}} here can be potentially in a state of not closed after leaving the method, if there is an (IO) exception thrown from setLength.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)