You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2009/08/05 13:36:38 UTC

svn commit: r801136 - in /jackrabbit/branches/1.x: ./ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/DatabaseJournal.java jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/util/TransientFileFactory.java

Author: jukka
Date: Wed Aug  5 11:36:38 2009
New Revision: 801136

URL: http://svn.apache.org/viewvc?rev=801136&view=rev
Log:
1.x: Merged revision 796955 (JCR-1668)

Modified:
    jackrabbit/branches/1.x/   (props changed)
    jackrabbit/branches/1.x/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/DatabaseJournal.java
    jackrabbit/branches/1.x/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/util/TransientFileFactory.java

Propchange: jackrabbit/branches/1.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Aug  5 11:36:38 2009
@@ -1,2 +1,2 @@
 /incubator/jackrabbit/trunk:78926
-/jackrabbit/trunk:770143-773197,773483,773525-773555,773584,773588,773828,773835-775756,775833,775836,775840,775868,775981,775986,776036,776256,776310,776313,776321-776322,776332,776356-776357,776362,776373,776650-776693,776737,776757,776776-776777,777024,777029,777034,777478,777509,777541,777548,777936,778445,778613,778616,778621,778645,778720,778802,779032,779040,779068-779071,779074,779076,779081,779084,779086-779088,779090-779092,779094-779096,779101,779223,779225,779227-779228,779230,779233-779234,779460,779475-779476,779504,779550,779552,779555,779561,779563,779583,779590,779618,779621-779622,779624,779642,779654,779657-779659,779661,779936,780006,780010,780025,780085,780985,780989,780993,781017,781051,781054,781294-781300,781305-781311,781318,781328,781338,781344,781347,781369,781372,781377,781416-781417,781423,782621-782622,782644,782646,782652,782669,782675,782677,782683,782694,782921,782925,782930,782936,783002,783004-783005,783042-783043,783239,783278,783304,78331
 9-783321,783324,783326-783327,783330-783333,783337-783338,783340-783341,783343,783345-783346,783356,783359,783383,783386,783412,783435,783444,783447,783523,783688,783703,783708,783710,783719,783757,783759,783761,783786,783809,784011,784013,784039,784058,784060-784061,784090-784091,784106,784108-784109,784111,784117-784120,784124,784163,784261,784680,784691,784696,784760,784824,785112,785116,785157,785169,785209,785492,785517,785519,785529,785533,785535,785539-785540,785545,785580,785589-785590,785594,785597,785602,785627,785629,785631,785635,785668,785711,785725,785777,785863,785981,786003,786019,786028,786062,786075,786089-786090,786093-786094,786144,786146-786147,786149,786167,786280,786295,786319,786329-786330,786336,786409,786419,786423,786480,786485,786492,786513,786562,786565,786680,786685,787183,787219,787241,787942,787952,787964,787996,788002,788012-788013,788350-788351,788443,788446,788450,789245,789257,789269-789270,789279,789307,789312,789324,789338,789347,789485,
 789629,789809,789986,790054,790056,790065-790066,790068,790070-790071,790118,790127,790153,790235-790236,790528,790537,790541,790557-790558,790568,790590,790600,790603,790629,790814,790826,790834,790887,790892,790901,790930,790939,791180,791253,791255,791438-791439,791441,791452,791457,791475,791505,791520,791527,791737,791832,791884,791906,792102,792118,792138,792152,792155-792156,792160,792167-792168,792175,792180-792181,792211,792214,792218,792437,792453,792464,792467,792469,792485,792488,792496,792498,792509,792547-792548,792588-792589,793012-793013,793015-793016,793018,793046-793047,793072,793180,793238,793243,793283,793485,793507,793559,793571,793830,793836,793840,794162,794190,794193,794253,794278,794293-794294,794323,794329,794600,794633,794641,794644,794652,794674,794702,794718,794743,794994,795046,795049,795082,795096,795136,795138,795841-795842,795854,796586,796757,796845,796855,796876,796899,796957,797094,797139,797158,797386,797399,797410,797414,797416-797417,79
 7424,797470,797484,797488-797489,797539,797549,797634,797662,797836,798141,798183,798196,798209,798306,798834,798844,798847-798848,798889-798890,798940,798958,799188,799284,799550,799595,799599,799610,800269,800464,800466,800478,800483,800715,800807,800829,800854,800862-800863,801104
+/jackrabbit/trunk:770143-773197,773483,773525-773555,773584,773588,773828,773835-775756,775833,775836,775840,775868,775981,775986,776036,776256,776310,776313,776321-776322,776332,776356-776357,776362,776373,776650-776693,776737,776757,776776-776777,777024,777029,777034,777478,777509,777541,777548,777936,778445,778613,778616,778621,778645,778720,778802,779032,779040,779068-779071,779074,779076,779081,779084,779086-779088,779090-779092,779094-779096,779101,779223,779225,779227-779228,779230,779233-779234,779460,779475-779476,779504,779550,779552,779555,779561,779563,779583,779590,779618,779621-779622,779624,779642,779654,779657-779659,779661,779936,780006,780010,780025,780085,780985,780989,780993,781017,781051,781054,781294-781300,781305-781311,781318,781328,781338,781344,781347,781369,781372,781377,781416-781417,781423,782621-782622,782644,782646,782652,782669,782675,782677,782683,782694,782921,782925,782930,782936,783002,783004-783005,783042-783043,783239,783278,783304,78331
 9-783321,783324,783326-783327,783330-783333,783337-783338,783340-783341,783343,783345-783346,783356,783359,783383,783386,783412,783435,783444,783447,783523,783688,783703,783708,783710,783719,783757,783759,783761,783786,783809,784011,784013,784039,784058,784060-784061,784090-784091,784106,784108-784109,784111,784117-784120,784124,784163,784261,784680,784691,784696,784760,784824,785112,785116,785157,785169,785209,785492,785517,785519,785529,785533,785535,785539-785540,785545,785580,785589-785590,785594,785597,785602,785627,785629,785631,785635,785668,785711,785725,785777,785863,785981,786003,786019,786028,786062,786075,786089-786090,786093-786094,786144,786146-786147,786149,786167,786280,786295,786319,786329-786330,786336,786409,786419,786423,786480,786485,786492,786513,786562,786565,786680,786685,787183,787219,787241,787942,787952,787964,787996,788002,788012-788013,788350-788351,788443,788446,788450,789245,789257,789269-789270,789279,789307,789312,789324,789338,789347,789485,
 789629,789809,789986,790054,790056,790065-790066,790068,790070-790071,790118,790127,790153,790235-790236,790528,790537,790541,790557-790558,790568,790590,790600,790603,790629,790814,790826,790834,790887,790892,790901,790930,790939,791180,791253,791255,791438-791439,791441,791452,791457,791475,791505,791520,791527,791737,791832,791884,791906,792102,792118,792138,792152,792155-792156,792160,792167-792168,792175,792180-792181,792211,792214,792218,792437,792453,792464,792467,792469,792485,792488,792496,792498,792509,792547-792548,792588-792589,793012-793013,793015-793016,793018,793046-793047,793072,793180,793238,793243,793283,793485,793507,793559,793571,793830,793836,793840,794162,794190,794193,794253,794278,794293-794294,794323,794329,794600,794633,794641,794644,794652,794674,794702,794718,794743,794994,795046,795049,795082,795096,795136,795138,795841-795842,795854,796586,796757,796845,796855,796876,796899,796955,796957,797094,797139,797158,797386,797399,797410,797414,797416-79
 7417,797424,797470,797484,797488-797489,797539,797549,797634,797662,797836,798141,798183,798196,798209,798306,798834,798844,798847-798848,798889-798890,798940,798958,799188,799284,799550,799595,799599,799610,800269,800464,800466,800478,800483,800715,800807,800829,800854,800862-800863,801104

Modified: jackrabbit/branches/1.x/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/DatabaseJournal.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.x/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/DatabaseJournal.java?rev=801136&r1=801135&r2=801136&view=diff
==============================================================================
--- jackrabbit/branches/1.x/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/DatabaseJournal.java (original)
+++ jackrabbit/branches/1.x/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/DatabaseJournal.java Wed Aug  5 11:36:38 2009
@@ -229,6 +229,8 @@
         janitorNextRun.set(Calendar.MILLISECOND, 0);
     }
 
+    private Thread janitorThread;
+
     /**
      * Whether the schema check must be done during initialization.
      */
@@ -387,9 +389,9 @@
 
         // Start the clean-up thread if necessary.
         if (janitorEnabled) {
-            Thread t1 = new Thread(new RevisionTableJanitor(), "ClusterRevisionJanitor");
-            t1.setDaemon(true);
-            t1.start();
+            janitorThread = new Thread(new RevisionTableJanitor(), "Jackrabbit-ClusterRevisionJanitor");
+            janitorThread.setDaemon(true);
+            janitorThread.start();
             log.info("Cluster revision janitor thread started; first run scheduled at " + janitorNextRun.getTime());
         } else {
             log.info("Cluster revision janitor thread not started");
@@ -597,6 +599,9 @@
      */
     public void close() {
         close(false);
+        if (janitorThread != null) {
+            janitorThread.interrupt();
+        }
     }
 
     /**

Modified: jackrabbit/branches/1.x/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/util/TransientFileFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.x/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/util/TransientFileFactory.java?rev=801136&r1=801135&r2=801136&view=diff
==============================================================================
--- jackrabbit/branches/1.x/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/util/TransientFileFactory.java (original)
+++ jackrabbit/branches/1.x/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/util/TransientFileFactory.java Wed Aug  5 11:36:38 2009
@@ -45,18 +45,19 @@
      * Queue where <code>MoribundFileReference</code> instances will be enqueued
      * once the associated target <code>File</code> objects have been gc'ed.
      */
-    private ReferenceQueue phantomRefQueue = new ReferenceQueue();
+    private final ReferenceQueue phantomRefQueue = new ReferenceQueue();
 
     /**
      * Collection of <code>MoribundFileReference</code> instances currently
      * being tracked.
      */
-    private Collection trackedRefs = Collections.synchronizedList(new ArrayList());
+    private final Collection trackedRefs =
+        Collections.synchronizedList(new ArrayList());
 
     /**
      * The reaper thread responsible for removing files awaiting deletion
      */
-    private final Thread reaper;
+    private final ReaperThread reaper;
 
     /**
      * Shutdown hook which removes all files awaiting deletion
@@ -150,8 +151,7 @@
         // @see java.lang.util.Collections.synchronizedList(java.util.List)
         synchronized(trackedRefs) {
             for (Iterator it = trackedRefs.iterator(); it.hasNext();) {
-                MoribundFileReference fileRef = (MoribundFileReference) it.next();
-                fileRef.delete();
+                ((MoribundFileReference) it.next()).delete();
             }
 
         }
@@ -163,7 +163,9 @@
                 // jvm shutdown sequence has already begun,
                 // silently ignore... 
             }
+            shutdownHook = null;
         }
+        reaper.stopWorking();
     }
 
     //--------------------------------------------------------< inner classes >
@@ -172,6 +174,8 @@
      */
     private class ReaperThread extends Thread {
 
+        private volatile boolean stopping = false;
+
         ReaperThread(String name) {
             super(name);
         }
@@ -181,11 +185,15 @@
          * marker objects are reclaimed by the garbage collector.
          */
         public void run() {
-            while (true) {
+            while (!stopping) {
                 MoribundFileReference fileRef = null;
                 try {
                     // wait until a MoribundFileReference is ready for deletion
                     fileRef = (MoribundFileReference) phantomRefQueue.remove();
+                } catch (InterruptedException e) {
+                    if (stopping) {
+                        break;
+                    }
                 } catch (Exception e) {
                     // silently ignore...
                     continue;
@@ -196,6 +204,14 @@
                 trackedRefs.remove(fileRef);
             }
         }
+
+        /**
+         * Stops the reaper thread.
+         */
+        public void stopWorking() {
+            stopping = true;
+            interrupt();
+        }
     }
 
     /**
@@ -206,7 +222,7 @@
         /**
          * The full path to the file being tracked.
          */
-        private String path;
+        private final String path;
 
         /**
          * Constructs an instance of this class from the supplied parameters.