Author: tucu
Date: Wed Jul 3 21:36:27 2013
New Revision: 1499566
URL: http://svn.apache.org/r1499566
Log:
MAPREDUCE-5364. Deadlock between RenewalTimerTask methods cancel() and run().
(kkambatl via tucu)
Modified:
hadoop/common/branches/branch-1/CHANGES.txt
hadoop/common/branches/branch-1/src/mapred/org/apache/hadoop/mapreduce/security/token/DelegationTokenRenewal.java
Modified: hadoop/common/branches/branch-1/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-1/CHANGES.txt?rev=1499566&r1=1499565&r2=1499566&view=diff
==============================================================================
--- hadoop/common/branches/branch-1/CHANGES.txt (original)
+++ hadoop/common/branches/branch-1/CHANGES.txt Wed Jul 3 21:36:27 2013
@@ -71,6 +71,9 @@ Release 1.3.0 - unreleased
HADOOP-9678. TestRPC#testStopsAllThreads intermittently fails on Windows.
(Ivan Mitic via cnauroth)
+ MAPREDUCE-5364. Deadlock between RenewalTimerTask methods cancel() and
run().
+ (kkambatl via tucu)
+
Release 1.2.1 - Unreleased
INCOMPATIBLE CHANGES
Modified:
hadoop/common/branches/branch-1/src/mapred/org/apache/hadoop/mapreduce/security/token/DelegationTokenRenewal.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-1/src/mapred/org/apache/hadoop/mapreduce/security/token/DelegationTokenRenewal.java?rev=1499566&r1=1499565&r2=1499566&view=diff
==============================================================================
---
hadoop/common/branches/branch-1/src/mapred/org/apache/hadoop/mapreduce/security/token/DelegationTokenRenewal.java
(original)
+++
hadoop/common/branches/branch-1/src/mapred/org/apache/hadoop/mapreduce/security/token/DelegationTokenRenewal.java
Wed Jul 3 21:36:27 2013
@@ -30,6 +30,7 @@ import java.util.Set;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -200,13 +201,13 @@ public class DelegationTokenRenewal {
*/
private static class RenewalTimerTask extends TimerTask {
private DelegationTokenToRenew dttr;
- private boolean cancelled = false;
+ private AtomicBoolean cancelled = new AtomicBoolean(false);
RenewalTimerTask(DelegationTokenToRenew t) { dttr = t; }
@Override
- public synchronized void run() {
- if (cancelled) {
+ public void run() {
+ if (cancelled.get()) {
return;
}
@@ -234,8 +235,8 @@ public class DelegationTokenRenewal {
}
@Override
- public synchronized boolean cancel() {
- cancelled = true;
+ public boolean cancel() {
+ cancelled.set(true);
return super.cancel();
}
}