Index: lucene/suggest/src/test/org/apache/lucene/search/suggest/fst/BytesRefSortersTest.java
===================================================================
--- lucene/suggest/src/test/org/apache/lucene/search/suggest/fst/BytesRefSortersTest.java	(revision 1359677)
+++ lucene/suggest/src/test/org/apache/lucene/search/suggest/fst/BytesRefSortersTest.java	(working copy)
@@ -25,7 +25,9 @@
 public class BytesRefSortersTest extends LuceneTestCase {
   @Test
   public void testExternalRefSorter() throws Exception {
-    check(new ExternalRefSorter(new Sort()));
+    ExternalRefSorter s = new ExternalRefSorter(new Sort());
+    check(s);
+    s.close();
   }
 
   @Test
Index: lucene/suggest/src/test/org/apache/lucene/search/suggest/fst/LargeInputFST.java
===================================================================
--- lucene/suggest/src/test/org/apache/lucene/search/suggest/fst/LargeInputFST.java	(revision 1359677)
+++ lucene/suggest/src/test/org/apache/lucene/search/suggest/fst/LargeInputFST.java	(working copy)
@@ -56,5 +56,6 @@
     File fstFile = new File("completion.fst");
     System.out.println("Done. Writing automaton: " + fstFile.getAbsolutePath());
     completion.getFST().save(fstFile);
+    sorter.close();
   }
 }
Index: lucene/suggest/src/java/org/apache/lucene/search/suggest/SortedTermFreqIteratorWrapper.java
===================================================================
--- lucene/suggest/src/java/org/apache/lucene/search/suggest/SortedTermFreqIteratorWrapper.java	(revision 1359677)
+++ lucene/suggest/src/java/org/apache/lucene/search/suggest/SortedTermFreqIteratorWrapper.java	(working copy)
@@ -128,13 +128,13 @@
   }
   
   private void close() throws IOException {
+    IOUtils.close(reader);
     if (tempInput != null) {
       tempInput.delete();
     }
     if (tempSorted != null) {
       tempSorted.delete();
     }
-    IOUtils.close(reader);
   }
   
   private final static class BytesOnlyComparator implements Comparator<BytesRef> {
Index: lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/FSTCompletionLookup.java
===================================================================
--- lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/FSTCompletionLookup.java	(revision 1359677)
+++ lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/FSTCompletionLookup.java	(working copy)
@@ -150,6 +150,7 @@
 
     Sort.ByteSequencesWriter writer = new Sort.ByteSequencesWriter(tempInput);
     Sort.ByteSequencesReader reader = null;
+    ExternalRefSorter sorter = null;
 
     // Push floats up front before sequences to sort them. For now, assume they are non-negative.
     // If negative floats are allowed some trickery needs to be done to find their byte order.
@@ -175,7 +176,7 @@
       SortInfo info = new Sort().sort(tempInput, tempSorted);
       tempInput.delete();
       FSTCompletionBuilder builder = new FSTCompletionBuilder(
-          buckets, new ExternalRefSorter(new Sort()), sharedTailLength);
+          buckets, sorter = new ExternalRefSorter(new Sort()), sharedTailLength);
 
       final int inputLines = info.lines;
       reader = new Sort.ByteSequencesReader(tempSorted);
@@ -215,9 +216,9 @@
       success = true;
     } finally {
       if (success) 
-        IOUtils.close(reader, writer);
+        IOUtils.close(reader, writer, sorter);
       else 
-        IOUtils.closeWhileHandlingException(reader, writer);
+        IOUtils.closeWhileHandlingException(reader, writer, sorter);
 
       tempInput.delete();
       tempSorted.delete();
