SOLR-8015: HdfsLock may fail to close a FileSystem instance if it cannot immediately obtain an index lock.

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1720773 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Mark Robert Miller 2015-12-18 12:44:36 +00:00
parent a7569ce25b
commit 9794ec7705
2 changed files with 8 additions and 5 deletions

View File

@ -276,6 +276,8 @@ Bug Fixes
* SOLR-8419: TermVectorComponent for distributed search when distrib.singlePass could include term * SOLR-8419: TermVectorComponent for distributed search when distrib.singlePass could include term
vectors for documents that matched the query yet weren't in the returned documents. (David Smiley) vectors for documents that matched the query yet weren't in the returned documents. (David Smiley)
* SOLR-8015: HdfsLock may fail to close a FileSystem instance if it cannot immediately
obtain an index lock. (Mark Miller)
Other Changes Other Changes
---------------------- ----------------------

View File

@ -89,17 +89,17 @@ public class HdfsLockFactory extends LockFactory {
} }
} }
return new HdfsLock(fs, lockFile); return new HdfsLock(conf, lockFile);
} }
private static final class HdfsLock extends Lock { private static final class HdfsLock extends Lock {
private final FileSystem fs; private final Configuration conf;
private final Path lockFile; private final Path lockFile;
private volatile boolean closed; private volatile boolean closed;
HdfsLock(FileSystem fs, Path lockFile) { HdfsLock(Configuration conf, Path lockFile) {
this.fs = fs; this.conf = conf;
this.lockFile = lockFile; this.lockFile = lockFile;
} }
@ -108,6 +108,7 @@ public class HdfsLockFactory extends LockFactory {
if (closed) { if (closed) {
return; return;
} }
final FileSystem fs = FileSystem.get(lockFile.toUri(), conf);
try { try {
if (fs.exists(lockFile) && !fs.delete(lockFile, false)) { if (fs.exists(lockFile) && !fs.delete(lockFile, false)) {
throw new LockReleaseFailedException("failed to delete: " + lockFile); throw new LockReleaseFailedException("failed to delete: " + lockFile);