db-derby-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kahat...@apache.org
Subject svn commit: r644211 - /db/derby/code/branches/10.4/java/engine/org/apache/derby/impl/services/cache/ClockPolicy.java
Date Thu, 03 Apr 2008 08:08:19 GMT
Author: kahatlen
Date: Thu Apr  3 01:08:13 2008
New Revision: 644211

URL: http://svn.apache.org/viewvc?rev=644211&view=rev
Log:
DERBY-3582: IndexOutOfBoundsError in ClockPolicy.moveHand

Merged fix from trunk (revision 643870).

Modified:
    db/derby/code/branches/10.4/java/engine/org/apache/derby/impl/services/cache/ClockPolicy.java

Modified: db/derby/code/branches/10.4/java/engine/org/apache/derby/impl/services/cache/ClockPolicy.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.4/java/engine/org/apache/derby/impl/services/cache/ClockPolicy.java?rev=644211&r1=644210&r2=644211&view=diff
==============================================================================
--- db/derby/code/branches/10.4/java/engine/org/apache/derby/impl/services/cache/ClockPolicy.java
(original)
+++ db/derby/code/branches/10.4/java/engine/org/apache/derby/impl/services/cache/ClockPolicy.java
Thu Apr  3 01:08:13 2008
@@ -354,10 +354,14 @@
      * Get the holder under the clock hand, and move the hand to the next
      * holder.
      *
-     * @return the holder under the clock hand
+     * @return the holder under the clock hand, or {@code null} if the clock is
+     * empty
      */
     private Holder moveHand() {
         synchronized (clock) {
+            if (clock.isEmpty()) {
+                return null;
+            }
             if (hand >= clock.size()) {
                 hand = 0;
             }
@@ -402,6 +406,13 @@
         while (itemsToCheck-- > 0 || freeEntries.get() > 0) {
 
             final Holder h = moveHand();
+
+            if (h == null) {
+                // There are no elements in the clock, hence there is no
+                // reusable entry.
+                return null;
+            }
+
             final CacheEntry e = h.getEntry();
 
             if (e == null) {



Mime
View raw message