Clustering problem: is Orbeon fully stateless when using state-handling="client"?

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Clustering problem: is Orbeon fully stateless when using state-handling="client"?

Maciej Arciuch
Hello everyone,

could you tell me is Orbeon fully stateless when using state-handling="client"? Recently I've deployed Orbeon on a for machine cluster without the so-called session-affinity (all machines are available via the same address, but I have no control over which server responds to a particular request), set state-handling to "client" on these four machines and noticed a strange behavior, namely after pressing e.g. a button the action sometimes took place, sometimes not. I've looked at the logs and it SEEMS to me what when the AJAX request reached the same server that served the form (say, server1) everything works fine. The problem seems to occur when the AJAX request reaches a different server (say, server2). Then the messages like this appear:

DEBUG - XForms - XForms server - start handling external events
DEBUG - XForms -   XForms server - start handling external event {target id: "xf-1156·1", event name: "DOMFocusIn"}
DEBUG - XForms -     containing document - ignoring client event with invalid target id {target id: "xf-1156·1", event name: "DOMFocusIn"}
DEBUG - XForms -   XForms server - end handling external event {time (ms): "1"}
DEBUG - XForms -   XForms server - start handling external event {target id: "xf-1156·1", event name: "DOMActivate"}
DEBUG - XForms -     containing document - ignoring client event with invalid target id {target id: "xf-1156·1", event name: "DOMActivate"}
DEBUG - XForms -   XForms server - end handling external event {time (ms): "0"}
DEBUG - XForms - XForms server - end handling external events {time (ms): "1"}

... and of course no action is triggered.

So the question is: is it actually possible to achieve a configuration in which different servers respond to request originating from the same session? Does the state information contained in the request contain everything required for the server (any server) to process the request? Perhaps this info can be decoded in different ways on different machines (is the id assigning algorithm fully deterministic)? Have you tried to deploy Orbeon in such configurations?

I'm a bit lost, thanks in advance, Maciej
Reply | Threaded
Open this post in threaded view
|

Re: Clustering problem: is Orbeon fully stateless when using state-handling="client"?

Alessandro  Vernet
Administrator
Maciej,

With client state handling, having different Ajax requests handled by  
different servers should just work fine. You can easily try this with  
one server by stopping and restarting the server between two Ajax  
requests for the same page. But of course, let us know if you notice  
any problem with this.

Alex

On Nov 25, 2009, at 3:58 PM, Maciej Arciuch  
<[hidden email]> wrote:

>
> Hello everyone,
>
> could you tell me is Orbeon fully stateless when using
> state-handling="client"? Recently I've deployed Orbeon on a for  
> machine
> cluster without the so-called session-affinity (all machines are  
> available
> via the same address, but I have no control over which server  
> responds to a
> particular request), set state-handling to "client" on these four  
> machines
> and noticed a strange behavior, namely after pressing e.g. a button  
> the
> action sometimes took place, sometimes not. I've looked at the logs  
> and it
> SEEMS to me what when the AJAX request reached the same server that  
> served
> the form (say, server1) everything works fine. The problem seems to  
> occur
> when the AJAX request reaches a different server (say, server2).  
> Then the
> messages like this appear:
>
> DEBUG - XForms - XForms server - start handling external events
> DEBUG - XForms -   XForms server - start handling external event  
> {target id:
> "xf-1156·1", event name: "DOMFocusIn"}
> DEBUG - XForms -     containing document - ignoring client event with
> invalid target id {target id: "xf-1156·1", event name: "DOMFocusIn"}
> DEBUG - XForms -   XForms server - end handling external event {time  
> (ms):
> "1"}
> DEBUG - XForms -   XForms server - start handling external event  
> {target id:
> "xf-1156·1", event name: "DOMActivate"}
> DEBUG - XForms -     containing document - ignoring client event with
> invalid target id {target id: "xf-1156·1", event name: "DOMActivate"}
> DEBUG - XForms -   XForms server - end handling external event {time  
> (ms):
> "0"}
> DEBUG - XForms - XForms server - end handling external events {time  
> (ms):
> "1"}
>
> ... and of course no action is triggered.
>
> So the question is: is it actually possible to achieve a  
> configuration in
> which different servers respond to request originating from the same
> session? Does the state information contained in the request contain
> everything required for the server (any server) to process the  
> request?
> Perhaps this info can be decoded in different ways on different  
> machines (is
> the id assigning algorithm fully deterministic)? Have you tried to  
> deploy
> Orbeon in such configurations?
>
> I'm a bit lost, thanks in advance, Maciej
> --
> View this message in context: http://n4.nabble.com/Clustering-problem-is-Orbeon-fully-stateless-when-using-state-handling-client-tp787388p787388.html
> Sent from the ObjectWeb OPS - Users mailing list archive at  
> Nabble.com.
>
> --
> You receive this message as a subscriber of the [hidden email]  
> mailing list.
> To unsubscribe: mailto:[hidden email]
> For general help: mailto:[hidden email]?subject=help
> OW2 mailing lists service home page: http://www.ow2.org/wws


--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws
--
Follow Orbeon on Twitter: @orbeon
Follow me on Twitter: @avernet
Reply | Threaded
Open this post in threaded view
|

Re: Clustering problem: is Orbeon fully stateless when using state-handling="client"?

Erik Bruchez-3
In reply to this post by Maciej Arciuch
Maciej,

In theory yes, everything should be in the state sent by the client in
this case.

In practice, you might have hit a bug (which OF version are you using?).

Now you will be the judge of that, but my suspicion is that
performance can suffer a lot if you don't have session affinity,
because if requests move constantly from server to server, cached
resource will be lost at each transition (since caches reside in
memory). This will be in addition to the fact that the state
transfered on the wire can be huge.

-Erik

On Wed, Nov 25, 2009 at 12:58 AM, Maciej Arciuch
<[hidden email]> wrote:

>
> Hello everyone,
>
> could you tell me is Orbeon fully stateless when using
> state-handling="client"? Recently I've deployed Orbeon on a for machine
> cluster without the so-called session-affinity (all machines are available
> via the same address, but I have no control over which server responds to a
> particular request), set state-handling to "client" on these four machines
> and noticed a strange behavior, namely after pressing e.g. a button the
> action sometimes took place, sometimes not. I've looked at the logs and it
> SEEMS to me what when the AJAX request reached the same server that served
> the form (say, server1) everything works fine. The problem seems to occur
> when the AJAX request reaches a different server (say, server2). Then the
> messages like this appear:
>
> DEBUG - XForms - XForms server - start handling external events
> DEBUG - XForms -   XForms server - start handling external event {target id:
> "xf-1156·1", event name: "DOMFocusIn"}
> DEBUG - XForms -     containing document - ignoring client event with
> invalid target id {target id: "xf-1156·1", event name: "DOMFocusIn"}
> DEBUG - XForms -   XForms server - end handling external event {time (ms):
> "1"}
> DEBUG - XForms -   XForms server - start handling external event {target id:
> "xf-1156·1", event name: "DOMActivate"}
> DEBUG - XForms -     containing document - ignoring client event with
> invalid target id {target id: "xf-1156·1", event name: "DOMActivate"}
> DEBUG - XForms -   XForms server - end handling external event {time (ms):
> "0"}
> DEBUG - XForms - XForms server - end handling external events {time (ms):
> "1"}
>
> ... and of course no action is triggered.
>
> So the question is: is it actually possible to achieve a configuration in
> which different servers respond to request originating from the same
> session? Does the state information contained in the request contain
> everything required for the server (any server) to process the request?
> Perhaps this info can be decoded in different ways on different machines (is
> the id assigning algorithm fully deterministic)? Have you tried to deploy
> Orbeon in such configurations?
>
> I'm a bit lost, thanks in advance, Maciej
> --
> View this message in context: http://n4.nabble.com/Clustering-problem-is-Orbeon-fully-stateless-when-using-state-handling-client-tp787388p787388.html
> Sent from the ObjectWeb OPS - Users mailing list archive at Nabble.com.
>
>
> --
> You receive this message as a subscriber of the [hidden email] mailing list.
> To unsubscribe: mailto:[hidden email]
> For general help: mailto:[hidden email]?subject=help
> OW2 mailing lists service home page: http://www.ow2.org/wws
>
>


--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws