[Building Sakai] Tomcat Shutdown Issue possiable fix?

Mike Jennings mike_jennings at unc.edu
Wed Apr 4 17:37:16 PDT 2012


Hey everyone.  I did a lot of debugging and found something that seems 
to work for me.  I had to change the reflectutils code to put a timeout 
on the queue.remove() call.  I am not sure if by making the change I did 
will cause more issue in the future, but here you go.

So this is what I did, it appears that during shutdown the Finalizer is 
called and cleans up the queue references by doing a queue.remove() 
which is a blocker as it will wait forever.  During the first iteration 
the cleanup runs just fine, and closes out all single references in the 
queue, but then for some reason it gets called again and hangs forever 
on the second round.

I changed the code to put a timeout here and the Tomcat Server shutdown 
without a issue.

--- src/main/java/org/azeckoski/reflectutils/refmap/Finalizer.java 
(revision 109)
+++ src/main/java/org/azeckoski/reflectutils/refmap/Finalizer.java 
(working copy)
@@ -124,7 +124,7 @@
      try {
        while (true) {
          try {
-          cleanUp(queue.remove());
+          cleanUp(queue.remove(1000L));
          } catch (InterruptedException e) {
              // Thread has been interrupted, so do local cleanup
              frqReference.clear();

I am still not sure what it thinks it is looking for on the second pass.

Once I made this change I compiled reflectutils, then the kernel, then 
the entitybroker, then all of sakai.  I am going to revert my changes to 
reflectutils and then try rebuilding the kernel and entity broker 
locally and see if I can shutdown properly after that.

Mike
-- 
==============================================================================
Mike Jennings
Teaching and Learning Developer
University of North Carolina at Chapel Hill

Office: (919) 843-5013
Cell: (919) 698-3746
E-mail: mike_jennings at unc.edu


More information about the sakai-dev mailing list