Bug 777893 (SOA-421)

Summary: Document that stateful actons cannot be used under the cluster
Product: [JBoss] JBoss Enterprise SOA Platform 4 Reporter: Jiri Pechanec <jpechane>
Component: DocumentationAssignee: Joshua Wulf <jwulf>
Status: CLOSED NEXTRELEASE QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: 4.2 CR3CC: lcarlon
Target Milestone: ---   
Target Release: 4.2 GA   
Hardware: Unspecified   
OS: Unspecified   
URL: http://jira.jboss.org/jira/browse/SOA-421
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2008-02-29 01:12:07 UTC Type: Task
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Jiri Pechanec 2008-02-13 12:46:12 UTC
Affects: Documentation (Ref Guide, User Guide, etc.), Release Notes
Date of First Response: 2008-02-27 16:27:31
project_key: SOA

Document thatAggregator and stateful non-replicating actions in general cannot be used in ESB cluster config

Comment 1 Mark Little 2008-02-13 15:06:14 UTC
Affects: Added: [Documentation (Ref Guide, User Guide, etc.), Release Notes]


Comment 2 Joshua Wulf 2008-02-27 21:27:31 UTC
Jiri, could you please update this JIRA with more information, or a pointer to source JIRAs for more information.

thanks --josh

Comment 3 Joshua Wulf 2008-02-28 09:04:40 UTC
From an IRC conversation with Jiri:

Aggregator is a stateful action. It assembles a predefined number of messages into a single message, which is then passed on for further processing. While the Aggregator is waiting for all of the messages that it needs to arrive its state is stored in memory. In a clustered ESB environment the Aggregator is running on multiple machines, but it's memory is not replicated across those machines. This means that the Aggregator instance on one machine does not have access to the messages that have been captured by Aggregator instances on the other machines in the cluster. This can lead to the situation where messages are captured by different Aggregator instances in the cluster. Since they are unaware of each other the messages will never be assembled.

Because of this you should avoid using the Aggregator action in a clustered environment. Aggregator is the only stateful action that we deliver out of the box. If you create other stateful actions you will need to implement a replication mechanism to use them in a clustered environment.

Comment 4 Joshua Wulf 2008-02-28 09:10:41 UTC
Slightly edited:

Aggregator is a stateful action. It assembles a predefined number of messages into a single message, which is then passed on for further processing. The Aggregator's state is stored in memory while it is waiting for the arrival of all the messages required. In a clustered ESB environment multiple Aggregator instances are running, on the different nodes of the cluster, each with its own memory space. The Aggregator instance on one node does not have access to the messages that have been captured by Aggregator instances on other nodes in the cluster. This can lead to the situation where messages are captured by different Aggregator instances in the cluster, and because they are unaware of each other the messages will never be assembled.

Because of this you should avoid using the Aggregator action in a clustered environment. Aggregator is the only stateful action that we deliver out of the box. If you create other stateful actions you will need to implement a replication mechanism to use them in a clustered environment.

Comment 5 Joshua Wulf 2008-02-28 09:12:28 UTC
What's the roadmap for stateful action replication in a clustered environment? Is there one?

Is there a pointer that I can give to more information on developing a replicating stateful action?

Comment 6 Joshua Wulf 2008-02-28 09:25:48 UTC
<mlittle> jwulf, replication of stateful services is complex. It's not supported in the current ESB.
<mlittle> jwulf, it is a future feature though.

Comment 7 Joshua Wulf 2008-02-29 01:12:07 UTC
"5.5.  Aggregator and other stateful actions are not supported in a clustered environment

As mentioned throughout the Programmers Guide, high-availability services within JBossESB are currently only supported if they are stateless. The Aggregator action is a stateful instance, which necessarily means that if it is used within the Action Pipeline/Chain of a service, that service is no longer stateless and therefore cannot be used in a high-availability manner.

Further information: http://jira.jboss.com/jira/browse/SOA-421 "

Release note pushed to online - will be synced in next redhat.com/docs sync.