You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ji...@apache.org on 2008/02/23 05:44:12 UTC

svn commit: r630389 - in /hadoop/hbase/trunk: CHANGES.txt src/java/org/apache/hadoop/hbase/Leases.java

Author: jimk
Date: Fri Feb 22 20:44:11 2008
New Revision: 630389

URL: http://svn.apache.org/viewvc?rev=630389&view=rev
Log:
HBASE-461   Simplify leases.

Modified:
    hadoop/hbase/trunk/CHANGES.txt
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/Leases.java

Modified: hadoop/hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=630389&r1=630388&r2=630389&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Fri Feb 22 20:44:11 2008
@@ -59,7 +59,8 @@
    HBASE-414   Move client classes into client package
    HBASE-79    When HBase needs to be migrated, it should display a message on
                stdout, not just in the logs
-   
+   HBASE-461   Simplify leases.
+
 Branch 0.1
 
   INCOMPATIBLE CHANGES

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/Leases.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/Leases.java?rev=630389&r1=630388&r2=630389&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/Leases.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/Leases.java Fri Feb 22 20:44:11 2008
@@ -50,8 +50,6 @@
   private volatile DelayQueue<Lease> leaseQueue = new DelayQueue<Lease>();
 
   protected final Map<String, Lease> leases = new HashMap<String, Lease>();
-  protected final Map<String, LeaseListener> listeners =
-    new HashMap<String, LeaseListener>();
   private volatile boolean stopRequested = false;
 
   /**
@@ -84,17 +82,14 @@
         continue;
       }
       // A lease expired
-      LeaseListener listener = null;
       synchronized (leaseQueue) {
-        String leaseName = lease.getLeaseName();
-        leases.remove(leaseName);
-        listener = listeners.remove(leaseName);
-        if (listener == null) {
-          LOG.error("lease listener is null for lease " + leaseName);
+        leases.remove(lease.getLeaseName());
+        if (lease.getListener() == null) {
+          LOG.error("lease listener is null for lease " + lease.getLeaseName());
           continue;
         }
       }
-      listener.leaseExpired();
+      lease.getListener().leaseExpired();
     }
     close();
   }
@@ -120,7 +115,6 @@
     synchronized (leaseQueue) {
       leaseQueue.clear();
       leases.clear();
-      listeners.clear();
       leaseQueue.notifyAll();
     }
     LOG.info(Thread.currentThread().getName() + " closed leases");
@@ -136,14 +130,14 @@
     if (stopRequested) {
       return;
     }
-    Lease lease = new Lease(leaseName, System.currentTimeMillis() + leasePeriod);
+    Lease lease = new Lease(leaseName, listener,
+        System.currentTimeMillis() + leasePeriod);
     synchronized (leaseQueue) {
       if (leases.containsKey(leaseName)) {
         throw new IllegalStateException("lease '" + leaseName +
             "' already exists");
       }
       leases.put(leaseName, lease);
-      listeners.put(leaseName, listener);
       leaseQueue.add(lease);
     }
   }
@@ -179,17 +173,18 @@
             "' does not exist");
       }
       leaseQueue.remove(lease);
-      listeners.remove(leaseName);
     }
   }
 
   /** This class tracks a single Lease. */
   private static class Lease implements Delayed {
     private final String leaseName;
+    private final LeaseListener listener;
     private long expirationTime;
 
-    Lease(final String leaseName, long expirationTime) {
+    Lease(final String leaseName, LeaseListener listener, long expirationTime) {
       this.leaseName = leaseName;
+      this.listener = listener;
       this.expirationTime = expirationTime;
     }
 
@@ -197,6 +192,11 @@
     public String getLeaseName() {
       return leaseName;
     }
+    
+    /** @return listener */
+    public LeaseListener getListener() {
+      return this.listener;
+    }
 
     /** {@inheritDoc} */
     @Override
@@ -219,16 +219,9 @@
     /** {@inheritDoc} */
     public int compareTo(Delayed o) {
       long delta = this.getDelay(TimeUnit.MILLISECONDS) -
-      o.getDelay(TimeUnit.MILLISECONDS);
+        o.getDelay(TimeUnit.MILLISECONDS);
 
-      int value = 0;
-      if (delta > 0) {
-        value = 1;
-
-      } else if (delta < 0) {
-        value = -1;
-      }
-      return value;
+      return this.equals(o) ? 0 : (delta > 0 ? 1 : -1);
     }
 
     /** @param expirationTime the expirationTime to set */