[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