[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