[jboss-cvs] JBossCache/src/org/jboss/cache/statetransfer ...

Manik Surtani msurtani at jboss.com
Mon Jan 29 20:22:55 EST 2007


  User: msurtani
  Date: 07/01/29 20:22:55

  Modified:    src/org/jboss/cache/statetransfer 
                        DefaultStateTransferIntegrator.java
  Log:
  Fixed dodgy persistent state tfr without transient state breakage
  
  Revision  Changes    Path
  1.22      +35 -22    JBossCache/src/org/jboss/cache/statetransfer/DefaultStateTransferIntegrator.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: DefaultStateTransferIntegrator.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/statetransfer/DefaultStateTransferIntegrator.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -b -r1.21 -r1.22
  --- DefaultStateTransferIntegrator.java	19 Jan 2007 10:50:42 -0000	1.21
  +++ DefaultStateTransferIntegrator.java	30 Jan 2007 01:22:55 -0000	1.22
  @@ -21,6 +21,7 @@
   import org.jboss.cache.loader.CacheLoader;
   import org.jboss.cache.marshall.NodeData;
   import org.jboss.cache.marshall.NodeDataExceptionMarker;
  +import org.jboss.cache.marshall.NodeDataMarker;
   
   import java.io.IOException;
   import java.io.ObjectInputStream;
  @@ -29,6 +30,7 @@
   import java.util.List;
   import java.util.Map;
   import java.util.Set;
  +import java.util.Collections;
   
   public class DefaultStateTransferIntegrator implements StateTransferIntegrator
   {
  @@ -85,6 +87,10 @@
   
            notifyAllNodesCreated(target);
         }
  +      catch (Exception e)
  +      {
  +         if (log.isDebugEnabled()) log.debug("Caught unexpected exception", e);
  +      }
         finally
         {
            if (!transientSet)
  @@ -230,6 +236,9 @@
         target.removeChildrenDirect();
   
         List<NodeData> list = readNodesAsList(in);
  +      if (list != null)
  +      {
  +         // if the list was null we read an EOF marker!!  So don't bother popping it off the stack later.
         Iterator<NodeData> nodeDataIterator = list.iterator();
   
         // Read the first NodeData and integrate into our target
  @@ -260,10 +269,14 @@
         // read marker off stack
         cache.getMarshaller().objectFromObjectStream(in);
      }
  +   }
   
      private List<NodeData> readNodesAsList(ObjectInputStream in) throws Exception
      {
  -      List list = (List) cache.getMarshaller().objectFromObjectStream(in);
  +      Object obj = cache.getMarshaller().objectFromObjectStream(in);
  +      if (obj instanceof NodeDataMarker) return null;
  +      
  +      List list = (List) obj;
         for (Object o : list)
         {
            if (o instanceof NodeDataExceptionMarker)
  
  
  



More information about the jboss-cvs-commits mailing list