Update of /var/cvs/src/org/mmbase/module/core
In directory james.mmbase.org:/tmp/cvs-serv17267/src/org/mmbase/module/core

Modified Files:
        MMBase.java MMObjectBuilder.java 
Log Message:
MMB-1401 Serialization can corrupt MMBase database

Shutdown MMEvents probe and builder


See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/module/core
See also: http://www.mmbase.org/jira/browse/MMB-1401


Index: MMBase.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/module/core/MMBase.java,v
retrieving revision 1.239
retrieving revision 1.240
diff -u -b -r1.239 -r1.240
--- MMBase.java 21 Mar 2008 14:36:27 -0000      1.239
+++ MMBase.java 12 Apr 2008 10:43:14 -0000      1.240
@@ -43,7 +43,7 @@
  * @author Pierre van Rooden
  * @author Johannes Verelst
  * @author Ernst Bunders
- * @version $Id: MMBase.java,v 1.239 2008/03/21 14:36:27 nklasens Exp $
+ * @version $Id: MMBase.java,v 1.240 2008/04/12 10:43:14 nklasens Exp $
  */
 public class MMBase extends ProcessorModule {
 
@@ -452,25 +452,43 @@
         //}
     }
 
-    // javadoc inherited
+
+    /**
+     * @see org.mmbase.module.Module#shutdown()
+     */
     public void shutdown() {
         mmbaseState = STATE_SHUT_DOWN;
 
-        // there all over the place static references to mmbasroot are 
maintained, which I cannot
-        // change presently. so let's clean up mmbaseroot itself as well as 
possible...
-        typeDef = null;
-        relDef = null;
+        //shutdown in the reverse order as init does
+        
+        org.mmbase.core.event.EventManager.getInstance().shutdown();
+
+        org.mmbase.util.ThreadPools.shutdown();
+
+        mmbaseCop = null;
+
+        if (mmobjs != null) { 
+            for (Iterator mmbobjecIter = mmobjs.values().iterator(); 
mmbobjecIter.hasNext();) {
+                MMObjectBuilder builder = (MMObjectBuilder) 
mmbobjecIter.next();
+                builder.shutdown();
+            }
+            mmobjs.clear();
+        }
+
         oAlias = null;
         insRel = null;
         typeRel = null;
-        mmobjs.clear();
-        storageManagerFactory = null;
-        rootBuilder = null;
-        mmbaseCop = null;
+        relDef = null;
+        typeDef = null;
+
         clusterBuilder = null;
+        rootBuilder = null;
+
+        storageManagerFactory = null;
+        
+        // there all over the place static references to mmbasroot are 
maintained, which I cannot
+        // change presently. so let's clean up mmbaseroot itself as well as 
possible...
         mmbaseroot = null;
-        org.mmbase.util.ThreadPools.shutdown();
-        org.mmbase.core.event.EventManager.getInstance().shutdown();
     }
 
     /**


Index: MMObjectBuilder.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/module/core/MMObjectBuilder.java,v
retrieving revision 1.423
retrieving revision 1.424
diff -u -b -r1.423 -r1.424
--- MMObjectBuilder.java        11 Apr 2008 15:13:37 -0000      1.423
+++ MMObjectBuilder.java        12 Apr 2008 10:43:14 -0000      1.424
@@ -61,7 +61,7 @@
  * @author Rob van Maris
  * @author Michiel Meeuwissen
  * @author Ernst Bunders
- * @version $Id: MMObjectBuilder.java,v 1.423 2008/04/11 15:13:37 nklasens Exp 
$
+ * @version $Id: MMObjectBuilder.java,v 1.424 2008/04/12 10:43:14 nklasens Exp 
$
  */
 public class MMObjectBuilder extends MMTable implements NodeEventListener, 
RelationEventListener {
 
@@ -498,6 +498,11 @@
         return true;
     }
 
+    /** clean all acquired resources, because system is shutting down */ 
+    public void shutdown() {
+        // on default, nothing needs to be done.
+    }
+
     /**
      * Returns the builder object number, which also functions as the 
objecttype.
      * This is the same value as the value of the 'otype' field of objects 
created by this builder
_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to