Author: tgraves Date: Mon Dec 17 15:07:18 2012 New Revision: 1422971 URL: http://svn.apache.org/viewvc?rev=1422971&view=rev Log: HDFS-4307. SocketCache should use monotonic time (Colin Patrick McCabe via tgraves)
Modified: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/SocketCache.java Modified: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1422971&r1=1422970&r2=1422971&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original) +++ hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Mon Dec 17 15:07:18 2012 @@ -26,6 +26,9 @@ Release 0.23.6 - UNRELEASED HDFS-4248. Renaming directories may incorrectly remove the paths in leases under the tree. (daryn via szetszwo) + HDFS-4307. SocketCache should use monotonic time (Colin Patrick McCabe + via tgraves) + Release 0.23.5 - UNRELEASED INCOMPATIBLE CHANGES Modified: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/SocketCache.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/SocketCache.java?rev=1422971&r1=1422970&r2=1422971&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/SocketCache.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/SocketCache.java Mon Dec 17 15:07:18 2012 @@ -34,6 +34,7 @@ import org.apache.commons.logging.LogFac import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.util.Daemon; import org.apache.hadoop.util.StringUtils; +import org.apache.hadoop.util.Time; /** * A cache of input stream sockets to Data Node. @@ -54,7 +55,7 @@ class SocketCache { public SocketProp(Socket s) { this.s=s; - this.createTime = System.currentTimeMillis(); + this.createTime = Time.monotonicNow(); } public long getCreateTime() { @@ -184,7 +185,7 @@ class SocketCache { // if oldest socket expired, remove it if (entry == null || - System.currentTimeMillis() - entry.getValue().getCreateTime() < + Time.monotonicNow() - entry.getValue().getCreateTime() < expiryPeriod) { break; } @@ -214,13 +215,13 @@ class SocketCache { * older than expiryPeriod minutes */ private void run() throws InterruptedException { - for(long lastExpiryTime = System.currentTimeMillis(); + for(long lastExpiryTime = Time.monotonicNow(); !Thread.interrupted(); Thread.sleep(expiryPeriod)) { - final long elapsed = System.currentTimeMillis() - lastExpiryTime; + final long elapsed = Time.monotonicNow() - lastExpiryTime; if (elapsed >= expiryPeriod) { evictExpired(expiryPeriod); - lastExpiryTime = System.currentTimeMillis(); + lastExpiryTime = Time.monotonicNow(); } } clear();