You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ofbiz.apache.org by Anil Soni <an...@lntinfotech.com> on 2009/11/04 12:08:08 UTC

Load balancing DeltaManager problem.

I was doing load balancing using two OFBiz servers in Session Replication 
mode with Apache HTTP Server. 

Servers run properly in load balanced mode, If I shut down one server in 
the middle of browser session, the other OFBiz server continues the 
browser session without any problem. User login information also persistes 
in the  session, so the second server does not ask for login again. But 
when I go for placing the order, and close the server in middle of the 
check out process, rest all the details persist but cart comes out to be 
empty , and if there is some promotional item present in the cart, that 
promotional item persists inside the cart when second server continues 
browser session but all the other items get removed.

And I was getting this exception :

2009-10-29 12:06:49,971 (pool-2-thread-6) [ DeltaManager.java:1329:ERROR] 
Manager [/ordermgr]: Unable to receive message through TCP channel 
java.io.InvalidClassException: org.ofbiz.order.shoppingcart.ShoppingCart; 
local class incompatible: stream classdesc serialVersionUID = 
326289553356146708, local class serialVersionUID = -202274068516513625 
        at java.io.ObjectStreamClass.initNonProxy(Unknown Source) 
        at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source) 
        at java.io.ObjectInputStream.readClassDesc(Unknown Source) 
        at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source) 
        at java.io.ObjectInputStream.readClassDesc(Unknown Source) 
        at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) 
        at java.io.ObjectInputStream.readObject0(Unknown Source) 
        at java.io.ObjectInputStream.readObject(Unknown Source) 
        at javolution.util.FastMap.readObject(Unknown Source) 
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 

        at java.lang.reflect.Method.invoke(Unknown Source) 
        at java.io.ObjectStreamClass.invokeReadObject(Unknown Source) 
        at java.io.ObjectInputStream.readSerialData(Unknown Source) 
        at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) 
        at java.io.ObjectInputStream.readObject0(Unknown Source) 
        at java.io.ObjectInputStream.readObject(Unknown Source) 
        at 
org.apache.catalina.ha.session.DeltaRequest$AttributeInfo.readExternal(DeltaRequest.java:361) 

        at 
org.apache.catalina.ha.session.DeltaRequest.readExternal(DeltaRequest.java:255) 

        at 
org.apache.catalina.ha.session.DeltaManager.deserializeDeltaRequest(DeltaManager.java:619) 

        at 

After some debugging I found that It was problem of DeltaManager, so I 
used BackupManager as manager-class and set the value of 
apps-distributable="true" and apps-cross-context="true".After these 
settings load balancing in replication mode is working properly.

Now my question is that that why we are using DeltaManager as 
manager-class in ofbiz-containers.xml ? 



Thanks & Regards,
Anil Soni
Anil.Soni@lntinfotech.com
Tel : 91-22-6795 4324
Mobile : 9930302283

______________________________________________________________________

Re: Load balancing DeltaManager problem.

Posted by Adrian Crum <ad...@hlmksw.com>.
All we discussed there was suppressing compiler warnings, there is no 
effect on the compiled code.

-Adrian

Jacques Le Roux wrote:
> Also are you using the trunk ?
> Because there have been few changes regarding serialVersionUIDs  warning 
> suppression recently.
> But anyway I don't see how this could be related. If you think it may be 
> related check the thread "Usage of @SuppressWarnings("serial")" in dev ML
> 
> Jacques
> 
> From: "Scott Gray" <sc...@hotwaxmedia.com>
>> Hi Anil,
>>
>> I can't answer your question (I don't know enough about session  
>> replication) except to say that the API for DeltaManager says that it  
>> is the optimal way to handle the replication.
>>
>> Based on the error below my first guess as to the problem would be  
>> that you are running the instances of different jvm implementations/ 
>> versions and they are creating different serialVersionUIDs for the  
>> same class, hence the incompatibility error. Either that or the two  
>> classes are actually different in some way.  You could work around 
>> the  problem by hardcoding the serialVersionUIDs so that they are the 
>> same  (or at least try it to test the theory).  If that works then 
>> I'd  suggest digging in deeper around the actual cause of the issue 
>> i.e.  why the serialVersionUIDs different?
>>
>> Regards
>> Scott
>>
>> HotWax Media
>> http://www.hotwaxmedia.com
>>
>> On 5/11/2009, at 12:08 AM, Anil Soni wrote:
>>
>>> I was doing load balancing using two OFBiz servers in Session  
>>> Replication
>>> mode with Apache HTTP Server.
>>>
>>> Servers run properly in load balanced mode, If I shut down one  
>>> server in
>>> the middle of browser session, the other OFBiz server continues the
>>> browser session without any problem. User login information also  
>>> persistes
>>> in the  session, so the second server does not ask for login again.  But
>>> when I go for placing the order, and close the server in middle of the
>>> check out process, rest all the details persist but cart comes out  
>>> to be
>>> empty , and if there is some promotional item present in the cart,  that
>>> promotional item persists inside the cart when second server continues
>>> browser session but all the other items get removed.
>>>
>>> And I was getting this exception :
>>>
>>> 2009-10-29 12:06:49,971 (pool-2-thread-6) [ DeltaManager.java: 
>>> 1329:ERROR]
>>> Manager [/ordermgr]: Unable to receive message through TCP channel
>>> java.io.InvalidClassException:  
>>> org.ofbiz.order.shoppingcart.ShoppingCart;
>>> local class incompatible: stream classdesc serialVersionUID =
>>> 326289553356146708, local class serialVersionUID = -202274068516513625
>>>        at java.io.ObjectStreamClass.initNonProxy(Unknown Source)
>>>        at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
>>>        at java.io.ObjectInputStream.readClassDesc(Unknown Source)
>>>        at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
>>>        at java.io.ObjectInputStream.readClassDesc(Unknown Source)
>>>        at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
>>>        at java.io.ObjectInputStream.readObject0(Unknown Source)
>>>        at java.io.ObjectInputStream.readObject(Unknown Source)
>>>        at javolution.util.FastMap.readObject(Unknown Source)
>>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown  
>>> Source)
>>>
>>>        at java.lang.reflect.Method.invoke(Unknown Source)
>>>        at java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
>>>        at java.io.ObjectInputStream.readSerialData(Unknown Source)
>>>        at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
>>>        at java.io.ObjectInputStream.readObject0(Unknown Source)
>>>        at java.io.ObjectInputStream.readObject(Unknown Source)
>>>        at
>>> org.apache.catalina.ha.session.DeltaRequest 
>>> $AttributeInfo.readExternal(DeltaRequest.java:361)
>>>
>>>        at
>>> org .apache 
>>> .catalina.ha.session.DeltaRequest.readExternal(DeltaRequest.java:255)
>>>
>>>        at
>>> org .apache .catalina 
>>> .ha.session.DeltaManager.deserializeDeltaRequest(DeltaManager.java: 619)
>>>
>>>        at
>>>
>>> After some debugging I found that It was problem of DeltaManager, so I
>>> used BackupManager as manager-class and set the value of
>>> apps-distributable="true" and apps-cross-context="true".After these
>>> settings load balancing in replication mode is working properly.
>>>
>>> Now my question is that that why we are using DeltaManager as
>>> manager-class in ofbiz-containers.xml ?
>>>
>>>
>>>
>>> Thanks & Regards,
>>> Anil Soni
>>> Anil.Soni@lntinfotech.com
>>> Tel : 91-22-6795 4324
>>> Mobile : 9930302283
>>>
>>> ______________________________________________________________________
>>
>>
> 
> 
> 

Re: Load balancing DeltaManager problem.

Posted by Anil Soni <an...@lntinfotech.com>.
Thanks Scott and Jacques. Yes, I am using the trunk (3rd Novemeber).


Thanks & Regards,
Anil Soni
Anil.Soni@lntinfotech.com
Tel : 91-22-6795 4324
Mobile : 9930302283

______________________________________________________________________

Re: Load balancing DeltaManager problem.

Posted by Jacques Le Roux <ja...@les7arts.com>.
Also are you using the trunk ?
Because there have been few changes regarding serialVersionUIDs  warning suppression recently.
But anyway I don't see how this could be related. If you think it may be related check the thread "Usage of 
@SuppressWarnings("serial")" in dev ML

Jacques

From: "Scott Gray" <sc...@hotwaxmedia.com>
> Hi Anil,
>
> I can't answer your question (I don't know enough about session  replication) except to say that the API for DeltaManager says 
> that it  is the optimal way to handle the replication.
>
> Based on the error below my first guess as to the problem would be  that you are running the instances of different jvm 
> implementations/ versions and they are creating different serialVersionUIDs for the  same class, hence the incompatibility error. 
> Either that or the two  classes are actually different in some way.  You could work around the  problem by hardcoding the 
> serialVersionUIDs so that they are the same  (or at least try it to test the theory).  If that works then I'd  suggest digging in 
> deeper around the actual cause of the issue i.e.  why the serialVersionUIDs different?
>
> Regards
> Scott
>
> HotWax Media
> http://www.hotwaxmedia.com
>
> On 5/11/2009, at 12:08 AM, Anil Soni wrote:
>
>> I was doing load balancing using two OFBiz servers in Session  Replication
>> mode with Apache HTTP Server.
>>
>> Servers run properly in load balanced mode, If I shut down one  server in
>> the middle of browser session, the other OFBiz server continues the
>> browser session without any problem. User login information also  persistes
>> in the  session, so the second server does not ask for login again.  But
>> when I go for placing the order, and close the server in middle of the
>> check out process, rest all the details persist but cart comes out  to be
>> empty , and if there is some promotional item present in the cart,  that
>> promotional item persists inside the cart when second server continues
>> browser session but all the other items get removed.
>>
>> And I was getting this exception :
>>
>> 2009-10-29 12:06:49,971 (pool-2-thread-6) [ DeltaManager.java: 1329:ERROR]
>> Manager [/ordermgr]: Unable to receive message through TCP channel
>> java.io.InvalidClassException:  org.ofbiz.order.shoppingcart.ShoppingCart;
>> local class incompatible: stream classdesc serialVersionUID =
>> 326289553356146708, local class serialVersionUID = -202274068516513625
>>        at java.io.ObjectStreamClass.initNonProxy(Unknown Source)
>>        at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
>>        at java.io.ObjectInputStream.readClassDesc(Unknown Source)
>>        at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
>>        at java.io.ObjectInputStream.readClassDesc(Unknown Source)
>>        at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
>>        at java.io.ObjectInputStream.readObject0(Unknown Source)
>>        at java.io.ObjectInputStream.readObject(Unknown Source)
>>        at javolution.util.FastMap.readObject(Unknown Source)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown  Source)
>>
>>        at java.lang.reflect.Method.invoke(Unknown Source)
>>        at java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
>>        at java.io.ObjectInputStream.readSerialData(Unknown Source)
>>        at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
>>        at java.io.ObjectInputStream.readObject0(Unknown Source)
>>        at java.io.ObjectInputStream.readObject(Unknown Source)
>>        at
>> org.apache.catalina.ha.session.DeltaRequest $AttributeInfo.readExternal(DeltaRequest.java:361)
>>
>>        at
>> org .apache .catalina.ha.session.DeltaRequest.readExternal(DeltaRequest.java:255)
>>
>>        at
>> org .apache .catalina .ha.session.DeltaManager.deserializeDeltaRequest(DeltaManager.java: 619)
>>
>>        at
>>
>> After some debugging I found that It was problem of DeltaManager, so I
>> used BackupManager as manager-class and set the value of
>> apps-distributable="true" and apps-cross-context="true".After these
>> settings load balancing in replication mode is working properly.
>>
>> Now my question is that that why we are using DeltaManager as
>> manager-class in ofbiz-containers.xml ?
>>
>>
>>
>> Thanks & Regards,
>> Anil Soni
>> Anil.Soni@lntinfotech.com
>> Tel : 91-22-6795 4324
>> Mobile : 9930302283
>>
>> ______________________________________________________________________
>
> 



Re: Load balancing DeltaManager problem.

Posted by Scott Gray <sc...@hotwaxmedia.com>.
Hi Anil,

I can't answer your question (I don't know enough about session  
replication) except to say that the API for DeltaManager says that it  
is the optimal way to handle the replication.

Based on the error below my first guess as to the problem would be  
that you are running the instances of different jvm implementations/ 
versions and they are creating different serialVersionUIDs for the  
same class, hence the incompatibility error.  Either that or the two  
classes are actually different in some way.  You could work around the  
problem by hardcoding the serialVersionUIDs so that they are the same  
(or at least try it to test the theory).  If that works then I'd  
suggest digging in deeper around the actual cause of the issue i.e.  
why the serialVersionUIDs different?

Regards
Scott

HotWax Media
http://www.hotwaxmedia.com

On 5/11/2009, at 12:08 AM, Anil Soni wrote:

> I was doing load balancing using two OFBiz servers in Session  
> Replication
> mode with Apache HTTP Server.
>
> Servers run properly in load balanced mode, If I shut down one  
> server in
> the middle of browser session, the other OFBiz server continues the
> browser session without any problem. User login information also  
> persistes
> in the  session, so the second server does not ask for login again.  
> But
> when I go for placing the order, and close the server in middle of the
> check out process, rest all the details persist but cart comes out  
> to be
> empty , and if there is some promotional item present in the cart,  
> that
> promotional item persists inside the cart when second server continues
> browser session but all the other items get removed.
>
> And I was getting this exception :
>
> 2009-10-29 12:06:49,971 (pool-2-thread-6) [ DeltaManager.java: 
> 1329:ERROR]
> Manager [/ordermgr]: Unable to receive message through TCP channel
> java.io.InvalidClassException:  
> org.ofbiz.order.shoppingcart.ShoppingCart;
> local class incompatible: stream classdesc serialVersionUID =
> 326289553356146708, local class serialVersionUID = -202274068516513625
>        at java.io.ObjectStreamClass.initNonProxy(Unknown Source)
>        at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
>        at java.io.ObjectInputStream.readClassDesc(Unknown Source)
>        at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
>        at java.io.ObjectInputStream.readClassDesc(Unknown Source)
>        at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
>        at java.io.ObjectInputStream.readObject0(Unknown Source)
>        at java.io.ObjectInputStream.readObject(Unknown Source)
>        at javolution.util.FastMap.readObject(Unknown Source)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown  
> Source)
>
>        at java.lang.reflect.Method.invoke(Unknown Source)
>        at java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
>        at java.io.ObjectInputStream.readSerialData(Unknown Source)
>        at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
>        at java.io.ObjectInputStream.readObject0(Unknown Source)
>        at java.io.ObjectInputStream.readObject(Unknown Source)
>        at
> org.apache.catalina.ha.session.DeltaRequest 
> $AttributeInfo.readExternal(DeltaRequest.java:361)
>
>        at
> org 
> .apache 
> .catalina.ha.session.DeltaRequest.readExternal(DeltaRequest.java:255)
>
>        at
> org 
> .apache 
> .catalina 
> .ha.session.DeltaManager.deserializeDeltaRequest(DeltaManager.java: 
> 619)
>
>        at
>
> After some debugging I found that It was problem of DeltaManager, so I
> used BackupManager as manager-class and set the value of
> apps-distributable="true" and apps-cross-context="true".After these
> settings load balancing in replication mode is working properly.
>
> Now my question is that that why we are using DeltaManager as
> manager-class in ofbiz-containers.xml ?
>
>
>
> Thanks & Regards,
> Anil Soni
> Anil.Soni@lntinfotech.com
> Tel : 91-22-6795 4324
> Mobile : 9930302283
>
> ______________________________________________________________________


RE: Load balancing DeltaManager problem.

Posted by Abhai Chaudhary <Ab...@mindtree.com>.
I guess you would have compiled the server separately on each of these nodes. Just try compiling on one node and copy on the other.

-Abhai

-----Original Message-----
From: Anil Soni [mailto:anil.soni@lntinfotech.com]
Sent: Wednesday, November 04, 2009 3:08 AM
To: user@ofbiz.apache.org
Subject: Load balancing DeltaManager problem.

I was doing load balancing using two OFBiz servers in Session Replication
mode with Apache HTTP Server.

Servers run properly in load balanced mode, If I shut down one server in
the middle of browser session, the other OFBiz server continues the
browser session without any problem. User login information also persistes
in the  session, so the second server does not ask for login again. But
when I go for placing the order, and close the server in middle of the
check out process, rest all the details persist but cart comes out to be
empty , and if there is some promotional item present in the cart, that
promotional item persists inside the cart when second server continues
browser session but all the other items get removed.

And I was getting this exception :

2009-10-29 12:06:49,971 (pool-2-thread-6) [ DeltaManager.java:1329:ERROR]
Manager [/ordermgr]: Unable to receive message through TCP channel
java.io.InvalidClassException: org.ofbiz.order.shoppingcart.ShoppingCart;
local class incompatible: stream classdesc serialVersionUID =
326289553356146708, local class serialVersionUID = -202274068516513625
        at java.io.ObjectStreamClass.initNonProxy(Unknown Source)
        at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
        at java.io.ObjectInputStream.readClassDesc(Unknown Source)
        at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
        at java.io.ObjectInputStream.readClassDesc(Unknown Source)
        at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
        at java.io.ObjectInputStream.readObject0(Unknown Source)
        at java.io.ObjectInputStream.readObject(Unknown Source)
        at javolution.util.FastMap.readObject(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

        at java.lang.reflect.Method.invoke(Unknown Source)
        at java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
        at java.io.ObjectInputStream.readSerialData(Unknown Source)
        at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
        at java.io.ObjectInputStream.readObject0(Unknown Source)
        at java.io.ObjectInputStream.readObject(Unknown Source)
        at
org.apache.catalina.ha.session.DeltaRequest$AttributeInfo.readExternal(DeltaRequest.java:361)

        at
org.apache.catalina.ha.session.DeltaRequest.readExternal(DeltaRequest.java:255)

        at
org.apache.catalina.ha.session.DeltaManager.deserializeDeltaRequest(DeltaManager.java:619)

        at

After some debugging I found that It was problem of DeltaManager, so I
used BackupManager as manager-class and set the value of
apps-distributable="true" and apps-cross-context="true".After these
settings load balancing in replication mode is working properly.

Now my question is that that why we are using DeltaManager as
manager-class in ofbiz-containers.xml ?



Thanks & Regards,
Anil Soni
Anil.Soni@lntinfotech.com
Tel : 91-22-6795 4324
Mobile : 9930302283

______________________________________________________________________

http://www.mindtree.com/email/disclaimer.html