HDFS-7753. Fix Multithreaded correctness Warnings in BackupImage. Contributed by Rakesh R and Konstantin Shvachko.
This commit is contained in:
parent
7c6b6547ee
commit
a4ceea60f5
@ -904,6 +904,9 @@ Release 2.7.0 - UNRELEASED
|
||||
HDFS-7769. TestHDFSCLI should not create files in hdfs project root dir.
|
||||
(szetszwo)
|
||||
|
||||
HDFS-7753. Fix Multithreaded correctness Warnings in BackupImage.
|
||||
(Rakesh R and shv)
|
||||
|
||||
Release 2.6.1 - UNRELEASED
|
||||
|
||||
INCOMPATIBLE CHANGES
|
||||
|
@ -92,9 +92,16 @@ static enum BNState {
|
||||
storage.setDisablePreUpgradableLayoutCheck(true);
|
||||
bnState = BNState.DROP_UNTIL_NEXT_ROLL;
|
||||
}
|
||||
|
||||
void setNamesystem(FSNamesystem fsn) {
|
||||
this.namesystem = fsn;
|
||||
|
||||
synchronized FSNamesystem getNamesystem() {
|
||||
return namesystem;
|
||||
}
|
||||
|
||||
synchronized void setNamesystem(FSNamesystem fsn) {
|
||||
// Avoids overriding this.namesystem object
|
||||
if (namesystem == null) {
|
||||
this.namesystem = fsn;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -195,7 +202,7 @@ private synchronized void applyEdits(long firstTxId, int numTxns, byte[] data)
|
||||
}
|
||||
|
||||
FSEditLogLoader logLoader =
|
||||
new FSEditLogLoader(namesystem, lastAppliedTxId);
|
||||
new FSEditLogLoader(getNamesystem(), lastAppliedTxId);
|
||||
int logVersion = storage.getLayoutVersion();
|
||||
backupInputStream.setBytes(data, logVersion);
|
||||
|
||||
@ -209,7 +216,7 @@ private synchronized void applyEdits(long firstTxId, int numTxns, byte[] data)
|
||||
}
|
||||
lastAppliedTxId = logLoader.getLastAppliedTxId();
|
||||
|
||||
FSImage.updateCountForQuota(namesystem.dir.rootDir); // inefficient!
|
||||
FSImage.updateCountForQuota(getNamesystem().dir.getRoot()); // inefficient!
|
||||
} finally {
|
||||
backupInputStream.clear();
|
||||
}
|
||||
@ -258,7 +265,7 @@ private boolean tryConvergeJournalSpool() throws IOException {
|
||||
editStreams.add(s);
|
||||
}
|
||||
}
|
||||
loadEdits(editStreams, namesystem);
|
||||
loadEdits(editStreams, getNamesystem());
|
||||
}
|
||||
|
||||
// now, need to load the in-progress file
|
||||
@ -293,7 +300,7 @@ private boolean tryConvergeJournalSpool() throws IOException {
|
||||
+ " txns from in-progress stream " + stream);
|
||||
|
||||
FSEditLogLoader loader =
|
||||
new FSEditLogLoader(namesystem, lastAppliedTxId);
|
||||
new FSEditLogLoader(getNamesystem(), lastAppliedTxId);
|
||||
loader.loadFSEdits(stream, lastAppliedTxId + 1);
|
||||
lastAppliedTxId = loader.getLastAppliedTxId();
|
||||
assert lastAppliedTxId == getEditLog().getLastWrittenTxId();
|
||||
|
Loading…
Reference in New Issue
Block a user