Index: src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
===================================================================
--- src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java	(revision 790396)
+++ src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java	(working copy)
@@ -602,6 +602,9 @@
         e.printStackTrace();
       }
     }
+    // Send cache a shutdown.
+    LruBlockCache c = (LruBlockCache)StoreFile.getBlockCache(this.conf);
+    if (c != null) c.shutdown();
 
     // Send interrupts to wake up threads if sleeping so they notice shutdown.
     // TODO: Should we check they are alive?  If OOME could have exited already
Index: src/java/org/apache/hadoop/hbase/io/hfile/LruBlockCache.java
===================================================================
--- src/java/org/apache/hadoop/hbase/io/hfile/LruBlockCache.java	(revision 790396)
+++ src/java/org/apache/hadoop/hbase/io/hfile/LruBlockCache.java	(working copy)
@@ -659,5 +659,8 @@
   private long memorySize() {
     return (long)Math.floor(this.maxSize * this.memoryFactor * this.minFactor);
   }
-  
+
+  public void shutdown() {
+    this.scheduleThreadPool.shutdown();
+  }
 }
Index: src/java/org/apache/hadoop/hbase/io/hfile/SimpleBlockCache.java
===================================================================
--- src/java/org/apache/hadoop/hbase/io/hfile/SimpleBlockCache.java	(revision 790396)
+++ src/java/org/apache/hadoop/hbase/io/hfile/SimpleBlockCache.java	(working copy)
@@ -63,4 +63,8 @@
       boolean inMemory) {
     cache.put(blockName, new Ref(blockName, buf, q));
   }
+
+  public void shutdown() {
+    // noop
+  }
 }
Index: src/java/org/apache/hadoop/hbase/io/hfile/BlockCache.java
===================================================================
--- src/java/org/apache/hadoop/hbase/io/hfile/BlockCache.java	(revision 790396)
+++ src/java/org/apache/hadoop/hbase/io/hfile/BlockCache.java	(working copy)
@@ -46,5 +46,10 @@
    * @param blockName Block number to fetch.
    * @return Block or null if block is not in the cache.
    */
-  public ByteBuffer getBlock(String blockName);  
+  public ByteBuffer getBlock(String blockName);
+
+  /**
+   * Shutdown the cache.
+   */
+  public void shutdown();
 }
\ No newline at end of file
