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

Vladmir Blagojevic vladimir.blagojevic at jboss.com
Thu Sep 7 13:41:52 EDT 2006


  User: vblagojevic
  Date: 06/09/07 13:41:52

  Modified:    src/org/jboss/cache/statetransfer    
                        AbstractStateTransferGenerator.java
                        AbstractStateTransferIntegrator.java
                        StateTransferIntegrator_200.java
                        StreamingStateTransferIntegrator_200.java
  Log:
  state transfer error handling
  
  Revision  Changes    Path
  1.2       +15 -19    JBossCache/src/org/jboss/cache/statetransfer/AbstractStateTransferGenerator.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: AbstractStateTransferGenerator.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/statetransfer/AbstractStateTransferGenerator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- AbstractStateTransferGenerator.java	31 Aug 2006 20:30:45 -0000	1.1
  +++ AbstractStateTransferGenerator.java	7 Sep 2006 17:41:52 -0000	1.2
  @@ -40,6 +40,7 @@
            boolean generatePersistent, boolean suppressErrors) throws Throwable
      {
         Fqn fqn = rootNode.getFqn();
  +      Throwable encouteredException = null;
         try
         {
            
  @@ -60,15 +61,12 @@
            }
            catch (Throwable t)
            {
  +            encouteredException=t;
               log.error("failed getting the in-memory (transient) state", t);
  -            if (!suppressErrors)
  -               throw t;
  +            out.writeObject(t);            
            }
            finally
            {
  -            if (log.isTraceEnabled())
  -               log.trace("writing delimeter after transient state");
  -
               out.writeObject(StateTransferManager.STREAMING_DELIMETER_NODE);
            }
            
  @@ -85,15 +83,12 @@
            }
            catch (Throwable t)
            {
  +            encouteredException=t;
               log.error("failed writing associated state", t);
  -            if (!suppressErrors)
  -               throw t;
  +            out.writeObject(t);   
            }
            finally
            {
  -            if (log.isTraceEnabled())
  -               log.trace("writing delimeter after associated state");
  -
               out.writeObject(StateTransferManager.STREAMING_DELIMETER_NODE);
            }        
            
  @@ -121,21 +116,22 @@
            }
            catch (Throwable t)
            {
  +            encouteredException=t;
               log.error("failed getting the persistent state", t);
  -            if (!suppressErrors)
  -               throw t;
  +            out.writeObject(t);            
            }
            finally
            {
  -            if (log.isTraceEnabled())
  -               log.trace("writing delimeter after persistent state");
  -
               out.writeObject(StateTransferManager.STREAMING_DELIMETER_NODE);
            }
         }
         finally
         {
            out.close();
  +         if(encouteredException!=null && !suppressErrors)
  +         {
  +            throw encouteredException;
  +         }
         }
      }
   
  
  
  
  1.3       +52 -4     JBossCache/src/org/jboss/cache/statetransfer/AbstractStateTransferIntegrator.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: AbstractStateTransferIntegrator.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/statetransfer/AbstractStateTransferIntegrator.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- AbstractStateTransferIntegrator.java	6 Sep 2006 15:34:13 -0000	1.2
  +++ AbstractStateTransferIntegrator.java	7 Sep 2006 17:41:52 -0000	1.3
  @@ -65,7 +65,6 @@
            if (log.isTraceEnabled())
               log.trace("transient state successfully integrated for " + targetFqn);
   
  -         integrateAssociatedState(in);
            notifyAllNodesCreated(target);
         }
         finally
  @@ -105,7 +104,7 @@
         else
         {
            if (log.isTraceEnabled())
  -            log.trace("setting the persistent state using " + loader.getClass());
  +            log.trace("integrating persistent state using " + loader.getClass());
            try
            {
               if (targetFqn.isRoot())
  @@ -122,12 +121,15 @@
            {
               if(!persistentSet)
               {
  +               if (log.isTraceEnabled())
  +                  log.trace("persistent state integration failed, removing all nodes from loader");
  +               
                  loader.remove(targetFqn);              
               }
               else
               {
                  if (log.isTraceEnabled())
  -                  log.trace("setting persistent state was successful");
  +                  log.trace("persistent state integrated successfully");
               }
            }         
         }
  @@ -341,4 +343,50 @@
         return targetFqn;
      }
   
  +   protected void integrateStateHelper(ObjectInputStream ois, DataNode target, ClassLoader cl) throws Exception
  +   {
  +      boolean exceptionsEncountered=false;
  +      //first try integrating transient state
  +      try
  +      {
  +         integrateTransientState(ois, target, cl);
  +      }
  +      catch(Throwable t)
  +      {
  +         exceptionsEncountered=true;
  +         log.error("Failed integrating transient state. Cause " + t.getLocalizedMessage());
  +      }
  +      
  +      //then try integrating associated state
  +      try
  +      {
  +         integrateAssociatedState(ois);
  +      }
  +      catch(Throwable t)
  +      {
  +         exceptionsEncountered=true;
  +         log.error("Failed integrating associated state. Cause " + t.getLocalizedMessage());
  +      }
  +      
  +      //finally try integrating persistent
  +      try
  +      {
  +         integratePersistentState(ois);
  +      }
  +      catch(Throwable t)
  +      {        
  +         exceptionsEncountered=true; 
  +        log.error("Failed integrating persistent state. Cause " + t.getLocalizedMessage());
  +      }
  +      
  +      finally
  +      {
  +         ois.close();
  +         if(exceptionsEncountered)
  +         {
  +            throw new Exception("State transfer was not successful");
  +         }
  +      }
  +   }
  +
   }
  
  
  
  1.7       +4 -10     JBossCache/src/org/jboss/cache/statetransfer/StateTransferIntegrator_200.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: StateTransferIntegrator_200.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/statetransfer/StateTransferIntegrator_200.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -b -r1.6 -r1.7
  --- StateTransferIntegrator_200.java	31 Aug 2006 20:30:45 -0000	1.6
  +++ StateTransferIntegrator_200.java	7 Sep 2006 17:41:52 -0000	1.7
  @@ -30,14 +30,8 @@
         MarshalledValueInputStream in = new MarshalledValueInputStream(bais);
         in.readShort(); // the version, which we discard   
   
  -      try
  -      {
  -         integrateTransientState(in, target, cl);
  -         integratePersistentState(in);
  -      }
  -      finally
  -      {
  -         in.close();
  -      }
  +      
  +      integrateStateHelper(in, target, cl);
  +
      }
   }
  
  
  
  1.4       +2 -10     JBossCache/src/org/jboss/cache/statetransfer/StreamingStateTransferIntegrator_200.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: StreamingStateTransferIntegrator_200.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/statetransfer/StreamingStateTransferIntegrator_200.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -b -r1.3 -r1.4
  --- StreamingStateTransferIntegrator_200.java	31 Aug 2006 20:30:45 -0000	1.3
  +++ StreamingStateTransferIntegrator_200.java	7 Sep 2006 17:41:52 -0000	1.4
  @@ -25,14 +25,6 @@
   
      public void integrateState(DataNode target, ClassLoader cl) throws Exception
      {
  -      try
  -      {
  -         integrateTransientState(in, target, cl);
  -         integratePersistentState(in);
  -      }
  -      finally
  -      {
  -         in.close();
  -      }
  +      integrateStateHelper(in,target, cl);
      }
   }
  
  
  



More information about the jboss-cvs-commits mailing list