Hi Folks,

I tried searching through the archives of this forum for an answer to my issue 
with no success so if someone could help me out it would be great.

I'm running jboss-cache 1.4.1 sp3 on two servers both running 
jakarta-tomcat-5.5.9. I have a basic treecache configured on both servers in 
which I place an ArrayList of a java class containing config information for my 
frontend (strings, dates, etc.).

Starting both servers, everything works fine. I can populate the cache and the 
changes are replicated across the jgroups "cluster".

The problem occurs when I take down an instance of tomcat and then restart. The 
current state of the cache is not replicated to the recently added node. I get 
an initial state transfer error as follows:

INFO: returning the state for tree rooted in /(4096 bytes)
  | May 29, 2007 11:37:02 AM org.jboss.cache.TreeCache viewAccepted
  | INFO: viewAccepted(): [16.*.*.*:58177|2] [16.*.*.*:58177]
  | May 29, 2007 11:37:20 AM 
org.jboss.cache.statetransfer.StateTransferGenerator_140 generateStateTransfer
  | SEVERE: failed getting the in-memory (transient) state
  | java.io.NotSerializableException: 
com.hp.esso.rstl.tsa.programmatic.AssessmentRequest
  |         at 
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
  |         at 
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
  |         at java.util.ArrayList.writeObject(ArrayList.java:578)
  |         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  |         at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  |         at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |         at java.lang.reflect.Method.invoke(Method.java:585)
  |         at 
java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:890)
  |         at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1333)
  |         at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
  |         at 
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
  |         at 
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
  |         at java.util.HashMap.writeObject(HashMap.java:985)
  |         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  |         at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  |         at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |         at java.lang.reflect.Method.invoke(Method.java:585)
  |         at 
java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:890)
  |         at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1333)
  |         at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
  |         at 
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
  |         at 
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
  |         at org.jboss.cache.loader.NodeData.writeExternal(NodeData.java:51)
  |         at 
java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1304)
  |         at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1282)
  |         at 
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
  |         at 
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
  |         at 
org.jboss.cache.statetransfer.StateTransferGenerator_140.marshallTransientState(StateTransferGenerator_140.java:204)
  |         at 
org.jboss.cache.statetransfer.StateTransferGenerator_140.marshallTransientState(StateTransferGenerator_140.java:212)
  |         at 
org.jboss.cache.statetransfer.StateTransferGenerator_140.generateStateTransfer(StateTransferGenerator_140.java:81)
  |         at org.jboss.cache.TreeCache._getState(TreeCache.java:2691)
  |         at org.jboss.cache.TreeCache._getState(TreeCache.java:2614)
  |         at 
org.jboss.cache.TreeCache$MessageListenerAdaptor.getState(TreeCache.java:5537)
  |         at 
org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.passUp(MessageDispatcher.java:671)
  |         at 
org.jgroups.blocks.RequestCorrelator.receive(RequestCorrelator.java:363)
  |         at 
org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:775)
  |         at org.jgroups.JChannel.up(JChannel.java:1091)
  |         at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:377)
  |         at 
org.jgroups.stack.ProtocolStack.receiveUpEvent(ProtocolStack.java:393)
  |         at org.jgroups.stack.Protocol.passUp(Protocol.java:538)
  |         at 
org.jgroups.protocols.pbcast.STATE_TRANSFER.requestApplicationStates(STATE_TRANSFER.java:326)
  |         at 
org.jgroups.protocols.pbcast.STATE_TRANSFER.up(STATE_TRANSFER.java:132)
  |         at org.jgroups.stack.UpHandler.run(Protocol.java:60)
  | 

I've made the class in the ArrayList serializable and everything works fine if 
the cache is empty the first time it comes up.

Just a note, I've also tried to set the "FetchStateOnStartup" attribute to 
false in my configuration file but this does not appear to get picked up. I 
tested it by outputting the getFetchStateOnStartup() call in my code.

Either way I want the state fetched on startup! 

Any feedback would be most appreciated,

Thanks,

Ray.



View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4049373#4049373

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4049373
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to