Hello,
I am reviewing the failoverendpoint of synapse. I have looked into the samples and the javadoc, but I am still unsure about the descriptions, I guess there is some confusion here. The description about failoverendpoints on http://synapse.apache.org/Synapse_Configuration_Language.html is: "Failover endpoints send messages to the listed endpoints with the following failover behavior. At the start, the first listed endpoint is selected as the primary and all other endpoints are treated as backups. Incoming messages are always sent only to the primary endpoint. If the primary endpoint fails, next active endpoint is selected as the primary and failed endpoint is marked as inactive. Thus it sends messages successfully as long as there is at least one active endpoint among the listed endpoints. " So it is about one primary endpoint and the following are the alternative endpoints that will become the primary endpoint if the former primary endpoint fails. Whenever the current primary endpoint fails, synapse will iterate the list of endpoints from the top to the bottom to find an active endpoint. But in the javadoc of the FailoverEndpoint http://synapse.apache.org/apidocs/org/apache/synapse/endpoints/FailoverEndpoint.html says: "FailoverEndpoint can have multiple child endpoints. It will always try to send messages to current endpoint. If the current endpoint is failing, it gets another active endpoint from the list and make it the current endpoint. Then the message is sent to the current endpoint and if it fails, above procedure repeats until there are no active endpoints. If all endpoints are failing and parent endpoint is available, this will delegate the problem to the parent endpoint. If parent endpoint is not available it will pop the next FaultHandler and delegate the problem to that." Here it is about current endpoint, child endpoints and parent endpoint. While the child endpoints probably match to the alternative endpoints in the first description, I'm not sure about the the parent and the current endpoint term. My guess is that with the term "parent endpoint" the first child (<endpoint>) of the failover element and the "current endpoint" is the currently active one which make it match the "assigned primary" endpoint in the first description. Can anyone approve my guess? I have to be picky about this as I am trying to reuse the Failoverendpoint class to write a custom mediator. Greetings, Song Thuy Nguyen
