Hi Kevin, First of thanks for analyzing the issue in detail and coming back with the fixes. Of course we would be more than happy to accept patches for any bugs you encounter :) You can provide patches through our bug tracker [1] and an engineer from relevant team will verify the fix and commit it to the trunk.
Since this is a fix for ESB you can raise an issue in ESB project [2] and attach the patch there. Note that you will have to register in Oxygen Tank in order to be able to login to Jira. [1] - https://wso2.org/jira/secure/Dashboard.jspa [2] - https://wso2.org/jira/browse/ESBJAVA [3] - http://wso2.org/ On Wed, Mar 6, 2013 at 10:18 PM, Kevin Sewell <[email protected]>wrote: > Hi Guys, > > Sorry if this not the right channel but I was wondering what the procedure > is to contribute patches and bug fixes. > > I have been experiencing a Heisenbug on the wso2esb 4.6.0 / stratos 1.6.0. > > It appears that the buggy code is in > org.wso2.carbon.proxyadmin.ProxyServiceDeployer.init(ConfigurationContext > configCtx). The while loop is waiting for the MediationPersistenceManager > to be initialized and I assume is supposed to retry 10 times which should > be *while(mpm == null && retry < 10)* . However, the conditional states > *while(mpm > == null || retry < 10).* Which causes two problems, one very trivial, the > other not so much. > > 1) The while loop will always execute ten times > 2) The MediationPersistenceManager is initialised in > org.wso2.carbon.mediation.initializer.multitenancy.TenantServiceBusInitializer > and > the order in which TenantServiceBusInitializer or > ProxyAdminServiceComponent (or any other Axis2ConfigurationContextObserver) > gets invoked via > org.wso2.carbon.core.multitenancy.utils.TenantAxisUtils.createTenantConfigurationContext(ConfigurationContext > mainConfigCtx, String tenantDomain) is non-deterministic (from what I can > see). > > The problem here is that when the > TenantServiceBusInitializer.createdConfigurationContext(ConfigurationContext > configContext) is set to be invoked after > ProxyAdminServiceComponent..createdConfigurationContext(ConfigurationContext > configContext), due to the ordering of the array of services returned by > the org.osgi.util.tracker.ServiceTracker, the loop in > org.wso2.carbon.proxyadmin.ProxyServiceDeployer.init(ConfigurationContext > configCtx) never completes and TenantServiceBusInitializer. > createdConfigurationContext(ConfigurationContext configContext) is never > invoked. > > The user will then experience an exception when trying to access any of > the synapse component UIs because of a NullPointer thrown when the > associated Admin classes try to obtain a lock via > AbstractServiceBusAdmin.getLock() > > Many thanks, > Kevin > > _______________________________________________ > Dev mailing list > [email protected] > http://wso2.org/cgi-bin/mailman/listinfo/dev > > -- Thanks, Shariq. Phone: +94 777 202 225
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
