HDFS-3915. QJM: Failover fails with auth error in secure cluster. Contributed by Todd Lipcon.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/HDFS-3077@1383242 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
c5199cace6
commit
c859e87d1e
|
@ -64,3 +64,5 @@ HDFS-3901. QJM: send 'heartbeat' messages to JNs even when they are out-of-sync
|
|||
HDFS-3899. QJM: Add client-side metrics (todd)
|
||||
|
||||
HDFS-3914. QJM: acceptRecovery should abort current segment (todd)
|
||||
|
||||
HDFS-3915. QJM: Failover fails with auth error in secure cluster (todd)
|
||||
|
|
|
@ -21,6 +21,7 @@ package org.apache.hadoop.hdfs.server.namenode.ha;
|
|||
import java.io.IOException;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.security.PrivilegedAction;
|
||||
import java.security.PrivilegedExceptionAction;
|
||||
import java.util.Collection;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
|
@ -172,11 +173,20 @@ public class EditLogTailer {
|
|||
Preconditions.checkState(tailerThread == null ||
|
||||
!tailerThread.isAlive(),
|
||||
"Tailer thread should not be running once failover starts");
|
||||
// Important to do tailing as the login user, in case the shared
|
||||
// edits storage is implemented by a JournalManager that depends
|
||||
// on security credentials to access the logs (eg QuorumJournalManager).
|
||||
SecurityUtil.doAsLoginUser(new PrivilegedExceptionAction<Void>() {
|
||||
@Override
|
||||
public Void run() throws Exception {
|
||||
try {
|
||||
doTailEdits();
|
||||
} catch (InterruptedException e) {
|
||||
throw new IOException(e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
|
|
Loading…
Reference in New Issue