You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@synapse.apache.org by "Asankha C. Perera" <as...@wso2.com> on 2008/09/05 14:28:07 UTC

Should we support automatic re-loading for resources and configuration loaded from the registry?

Hi All

When we initially built the Registry/Repository support for Synapse (and 
the WSO2 ESB), we allowed the runtime to dynamically re-load changed 
resources at runtime. We even made some of these changes visible 
atomically to a message (i.e. if during the inSequence a message saw the 
revision 344 of a resource, and the resource changed to 345 on the 
remote registry when the response processing began, we let the same 
version seen by this message earlier [344] be seen during the 
outSequence as well)

However, this has added quite a bit of complexity to the code, and 
probability for bugs and uncertainty. For example, if someone changed an 
XSLT and XSD at the same time on the registry, its possible for a 
message to see one version of the XSLT and another version of the XSD etc..

Allowing configuration elements (such as Sequences and Endpoints) to be 
stored in the Registry has added some confusion as well. Typically a 
production configuration is static, and any updates (esp in Production) 
is controlled by manual human interaction. Thus I do not see much value 
in allowing the configuration elements to be updated without the 
explicit knowledge and control of the ESB admins.. this also creates 
problems for us developers, who want to improve the JMX support and 
other features of Synapse, as we cannot let a definition just vanish to 
thin air and another configuration element to become available 
automatically.. I am ready to accept the proposed changes to support 
"includes" within a synapse.xml, and also the suggested JAR type 
archives as a mechanism to update/manage the configuration.

So my proposal about Registry caching, is to always cache forever any 
resources referred to from the Registry. We will then expose a new JMX 
function which will allow us to clear the full cache. This gives:

1) Full human control for resources loaded from the registry
2) Allows someone to update content on the Registry, and still make 
Synapse see the updated copies after a manual cache reset - when required
3) Allows some level of disconnected operation (e.g. once resources are 
loaded - e.g. WSDLs), i.e. the services on Synapse can continue even if 
the Registry becomes inaccessible

Your thoughts are welcome

asankha

-- 
Asankha C. Perera

WSO2 - http://wso2.org
http://esbmagic.blogspot.com