You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-commits@hadoop.apache.org by el...@apache.org on 2012/10/17 06:58:24 UTC
svn commit: r1399096 - in
/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs: CHANGES.txt
src/main/java/org/apache/hadoop/hdfs/server/common/GenerationStamp.java
Author: eli
Date: Wed Oct 17 04:58:24 2012
New Revision: 1399096
URL: http://svn.apache.org/viewvc?rev=1399096&view=rev
Log:
HDFS-4029. GenerationStamp should use an AtomicLong. Contributed by Eli Collins
Modified:
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/GenerationStamp.java
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1399096&r1=1399095&r2=1399096&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Wed Oct 17 04:58:24 2012
@@ -394,6 +394,8 @@ Release 2.0.3-alpha - Unreleased
HDFS-2946. HA: Put a cap on the number of completed edits files retained
by the NN. (atm)
+ HDFS-4029. GenerationStamp should use an AtomicLong. (eli)
+
OPTIMIZATIONS
BUG FIXES
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/GenerationStamp.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/GenerationStamp.java?rev=1399096&r1=1399095&r2=1399096&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/GenerationStamp.java (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/GenerationStamp.java Wed Oct 17 04:58:24 2012
@@ -17,6 +17,8 @@
*/
package org.apache.hadoop.hdfs.server.common;
+import java.util.concurrent.atomic.AtomicLong;
+
import org.apache.hadoop.classification.InterfaceAudience;
/****************************************************************
@@ -35,7 +37,7 @@ public class GenerationStamp implements
*/
public static final long GRANDFATHER_GENERATION_STAMP = 0;
- private volatile long genstamp;
+ private AtomicLong genstamp = new AtomicLong();
/**
* Create a new instance, initialized to FIRST_VALID_STAMP.
@@ -48,35 +50,36 @@ public class GenerationStamp implements
* Create a new instance, initialized to the specified value.
*/
GenerationStamp(long stamp) {
- this.genstamp = stamp;
+ genstamp.set(stamp);
}
/**
* Returns the current generation stamp
*/
public long getStamp() {
- return this.genstamp;
+ return genstamp.get();
}
/**
* Sets the current generation stamp
*/
public void setStamp(long stamp) {
- this.genstamp = stamp;
+ genstamp.set(stamp);
}
/**
* First increments the counter and then returns the stamp
*/
- public synchronized long nextStamp() {
- this.genstamp++;
- return this.genstamp;
+ public long nextStamp() {
+ return genstamp.incrementAndGet();
}
@Override // Comparable
public int compareTo(GenerationStamp that) {
- return this.genstamp < that.genstamp ? -1 :
- this.genstamp > that.genstamp ? 1 : 0;
+ long stamp1 = this.genstamp.get();
+ long stamp2 = that.genstamp.get();
+ return stamp1 < stamp2 ? -1 :
+ stamp1 > stamp2 ? 1 : 0;
}
@Override // Object
@@ -89,6 +92,7 @@ public class GenerationStamp implements
@Override // Object
public int hashCode() {
- return (int) (genstamp^(genstamp>>>32));
+ long stamp = genstamp.get();
+ return (int) (stamp^(stamp>>>32));
}
}