HDFS-7042. Upgrade fails for Windows HA cluster due to file locks held during rename in JournalNode. Contributed by Chris Nauroth.
(cherry picked from commit 80ac6aabce
)
This commit is contained in:
parent
6f8b2a8e2e
commit
ac296f9522
|
@ -493,6 +493,9 @@ Release 2.6.0 - UNRELEASED
|
||||||
HDFS-6776. Using distcp to copy data between insecure and secure cluster via webdhfs
|
HDFS-6776. Using distcp to copy data between insecure and secure cluster via webdhfs
|
||||||
doesn't work. (yzhangal via tucu)
|
doesn't work. (yzhangal via tucu)
|
||||||
|
|
||||||
|
HDFS-7042. Upgrade fails for Windows HA cluster due to file locks held during
|
||||||
|
rename in JournalNode. (cnauroth)
|
||||||
|
|
||||||
Release 2.5.1 - UNRELEASED
|
Release 2.5.1 - UNRELEASED
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -994,6 +994,9 @@ public class Journal implements Closeable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void doPreUpgrade() throws IOException {
|
public synchronized void doPreUpgrade() throws IOException {
|
||||||
|
// Do not hold file lock on committedTxnId, because the containing
|
||||||
|
// directory will be renamed. It will be reopened lazily on next access.
|
||||||
|
committedTxnId.close();
|
||||||
storage.getJournalManager().doPreUpgrade();
|
storage.getJournalManager().doPreUpgrade();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1043,7 +1046,10 @@ public class Journal implements Closeable {
|
||||||
targetLayoutVersion);
|
targetLayoutVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void doRollback() throws IOException {
|
public synchronized void doRollback() throws IOException {
|
||||||
|
// Do not hold file lock on committedTxnId, because the containing
|
||||||
|
// directory will be renamed. It will be reopened lazily on next access.
|
||||||
|
committedTxnId.close();
|
||||||
storage.getJournalManager().doRollback();
|
storage.getJournalManager().doRollback();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -112,6 +112,7 @@ public class BestEffortLongFile implements Closeable {
|
||||||
public void close() throws IOException {
|
public void close() throws IOException {
|
||||||
if (ch != null) {
|
if (ch != null) {
|
||||||
ch.close();
|
ch.close();
|
||||||
|
ch = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue