use of org.mule.runtime.core.internal.retry.ReconnectionConfig in project mule by mulesoft.
the class LifecycleAwareConfigurationInstance method testConnectivity.
private void testConnectivity() throws MuleException {
ConnectionProvider provider = connectionProvider.get();
if (provider instanceof NoConnectivityTest) {
return;
}
Scheduler retryScheduler = schedulerService.ioScheduler();
RetryPolicyTemplate retryTemplate = connectionManager.getRetryTemplateFor(provider);
ReconnectionConfig reconnectionConfig = connectionManager.getReconnectionConfigFor(provider);
RetryCallback retryCallback = new RetryCallback() {
@Override
public void doWork(RetryContext context) throws Exception {
Lock lock = testConnectivityLock;
if (lock != null) {
final boolean lockAcquired = lock.tryLock();
if (lockAcquired) {
LOGGER.info("Doing testConnectivity() for config " + getName());
try {
ConnectionValidationResult result = connectionManager.testConnectivity(LifecycleAwareConfigurationInstance.this);
if (result.isValid()) {
context.setOk();
} else {
if ((reconnectionConfig.isFailsDeployment())) {
context.setFailed(result.getException());
throw new ConnectionException(format("Connectivity test failed for config '%s'", getName()), result.getException());
} else {
if (LOGGER.isInfoEnabled()) {
LOGGER.info(format("Connectivity test failed for config '%s'. Application deployment will continue. Error was: ", getName(), result.getMessage()), result.getException());
}
}
}
} finally {
lock.unlock();
}
} else {
LOGGER.warn("There is a testConnectivity() already running for config " + getName());
}
}
}
@Override
public String getWorkDescription() {
return format("Testing connectivity for config '%s'", getName());
}
@Override
public Object getWorkOwner() {
return value;
}
};
try {
retryTemplate.execute(retryCallback, retryScheduler);
} catch (Exception e) {
throw new DefaultMuleException(createStaticMessage(format("Could not perform connectivity testing for config '%s'", getName())), e);
} finally {
if (retryScheduler != null) {
retryScheduler.stop();
}
}
}
use of org.mule.runtime.core.internal.retry.ReconnectionConfig in project mule by mulesoft.
the class ConnectionProviderDefinitionParser method doParse.
@Override
protected Builder doParse(Builder definitionBuilder) throws ConfigurationException {
Builder finalBuilder = definitionBuilder.withIdentifier(connectionDsl.getElementName()).withTypeDefinition(fromType(ConnectionProviderResolver.class)).withObjectFactoryType(ConnectionProviderObjectFactory.class).withConstructorParameterDefinition(fromFixedValue(providerModel).build()).withConstructorParameterDefinition(fromFixedValue(extensionModel).build()).withConstructorParameterDefinition(fromReferenceObject(ExtensionsOAuthManager.class).build()).withConstructorParameterDefinition(fromReferenceObject(MuleContext.class).build()).withSetterParameterDefinition("reconnectionConfig", fromChildConfiguration(ReconnectionConfig.class).build()).withSetterParameterDefinition("poolingProfile", fromChildConfiguration(PoolingProfile.class).build());
parseParameters(providerModel);
return finalBuilder;
}
use of org.mule.runtime.core.internal.retry.ReconnectionConfig in project mule by mulesoft.
the class DefaultExecutionMediatorTestCase method before.
@Before
public void before() throws Exception {
when(configurationInstance.getStatistics()).thenReturn(configurationStats);
when(configurationInstance.getName()).thenReturn(DUMMY_NAME);
when(configurationInstance.getModel()).thenReturn(configurationModel);
when(extensionModel.getName()).thenReturn(DUMMY_NAME);
when(extensionModel.getModelProperty(ClassLoaderModelProperty.class)).thenReturn(empty());
mockExceptionEnricher(extensionModel, null);
mockExceptionEnricher(operationModel, null);
when(operationExecutor.execute(operationContext)).thenReturn(just(result));
when(operationExceptionExecutor.execute(operationContext)).thenReturn(error(exception));
when(operationContext.getConfiguration()).thenReturn(Optional.of(configurationInstance));
when(operationContext.getExtensionModel()).thenReturn(extensionModel);
when(operationContext.getTransactionConfig()).thenReturn(empty());
when(operationContext.getRetryPolicyTemplate()).thenReturn(empty());
when(operationContext.getCurrentScheduler()).thenReturn(IMMEDIATE_SCHEDULER);
when(extensionModel.getXmlDslModel()).thenReturn(XmlDslModel.builder().setPrefix("test-extension").build());
mediator = new DefaultExecutionMediator(extensionModel, operationModel, new DefaultConnectionManager(muleContext), muleContext.getErrorTypeRepository());
final ReconnectableConnectionProviderWrapper<Object> connectionProviderWrapper = new ReconnectableConnectionProviderWrapper<>(null, new ReconnectionConfig(true, new SimpleRetryPolicyTemplate(10, RETRY_COUNT)));
initialiseIfNeeded(connectionProviderWrapper, true, muleContext);
Optional<ConnectionProvider> connectionProvider = Optional.of(connectionProviderWrapper);
when(configurationInstance.getConnectionProvider()).thenReturn(connectionProvider);
when(exceptionEnricher.enrichException(exception)).thenReturn(new HeisenbergException(ERROR));
setInterceptors((Interceptable) configurationInstance, configurationInterceptor1, configurationInterceptor2);
setInterceptors((Interceptable) operationExecutor, operationInterceptor1, operationInterceptor2);
defineOrder(configurationInterceptor1, configurationInterceptor2, operationInterceptor1, operationInterceptor2);
}
Aggregations