Giter VIP home page Giter VIP logo

wso2-axis2-transports's Introduction

WSO2 Axis2 Transports

This projects includes the axis2 based transport implementations which are used across the WSO2 platform. It provides the base framework for building custom transports for axis2 based solutions like WSO2 ESB, WSO2 DSS.

Features

  • Base framework implementation for axis2 based transports
  • JMS transport
  • Mail (SMTP, POP, IMAP) transport
  • MQTT transport
  • MSMQ transport
  • RabbitMQ transport
  • SMS transport
  • TCP transport
  • UDP transport
  • XMPP transport
  • Message builder and formatter implementations to handle text, binay messages

How to Contribute

Contact us

WSO2 developers can be contacted via the mailing lists:

Jenkins Build Status

Branch Build Status
wso2-axis2-transports master Build Status

wso2-axis2-transports's People

Contributors

arunans23 avatar asitha avatar buddhima avatar chanakaudaya avatar chanikag avatar dulanjalidilmi avatar erandacr avatar gdlmadushanka avatar indikasampath2000 avatar isudana avatar isururanawaka avatar jagathsisira avatar kabanawso2 avatar kishanthan avatar lankavitharana avatar maheeka avatar malakaganga avatar malakasilva avatar nirothipan avatar prabathariyaratna avatar ravindraranwala avatar raviu avatar rosensilva avatar sameeragunarathne avatar sdkottegoda avatar shakila avatar vijithaekanayake avatar vinok88 avatar virajsenevirathne avatar wso2-jenkins-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wso2-axis2-transports's Issues

MSMQ Transport receiver does not support configuring the message content type through the property transport.msmq.ContentType

Although the property transport.msmq.ContentType is defined in [1], it is not getting set in the receiver when reading messages.

As a result, in a scenario where we need to read messages with application/xml content type, it is not configurable and the XML message will be read as text/xml. Then the server expects the message to be enclosed in SOAP envelop, but if we have just a raw XML message, server cannot read it. It will give following error.

[2017-05-25 19:35:53,697] [] ERROR - NativeWorkerPool Uncaught exception

org.apache.axiom.soap.SOAPProcessingException: First Element must contain the local name, Envelope , but found hello

    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.constructNode(StAXSOAPModelBuilder.java:305)
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createOMElement(StAXSOAPModelBuilder.java:252)
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createNextOMElement(StAXSOAPModelBuilder.java:234)
    at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:249)
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.getSOAPEnvelope(StAXSOAPModelBuilder.java:204)
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.<init>(StAXSOAPModelBuilder.java:154)
    at org.apache.axiom.om.impl.AbstractOMMetaFactory.createStAXSOAPModelBuilder(AbstractOMMetaFactory.java:73)
    at org.apache.axiom.om.impl.AbstractOMMetaFactory.createSOAPModelBuilder(AbstractOMMetaFactory.java:79)
    at org.apache.axiom.om.OMXMLBuilderFactory.createSOAPModelBuilder(OMXMLBuilderFactory.java:196)
    at org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java:65)
    at org.apache.axis2.format.TextMessageBuilderAdapter.processDocument(TextMessageBuilderAdapter.java:54)
    at org.apache.axis2.format.TextMessageBuilderAdapter.processDocument(TextMessageBuilderAdapter.java:70)
    at org.apache.axis2.format.TextMessageBuilderAdapter.processDocument(TextMessageBuilderAdapter.java:76)
    at org.apache.axis2.transport.msmq.util.MSMQUtil.setSOAPEnvelope(MSMQUtil.java:73)
    at org.apache.axis2.transport.msmq.MSMQMessageReceiver.processThroughEngine(MSMQMessageReceiver.java:98)
    at org.apache.axis2.transport.msmq.MSMQMessageReceiver.onMessage(MSMQMessageReceiver.java:64)
    at org.apache.axis2.transport.msmq.ServiceTaskManager.handleMessage(ServiceTaskManager.java:252)
    at org.apache.axis2.transport.msmq.ServiceTaskManager.access$700(ServiceTaskManager.java:40)
    at org.apache.axis2.transport.msmq.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:235)
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)

The fix is to make use of the property [1] and if it is set in the proxy's configuration, use it as the receiver's message content type when reading messages.

[1] https://github.com/wso2/wso2-axis2-transports/blob/master/modules/msmq/src/main/java/org/apache/axis2/transport/msmq/MSMQConstants.java#L27

JMS Transport Listener Idle tasks are not deactivated when we set the transport.jms.ConcurrentConsumers property value to 1

Description:

The initiative was to deactivate the idle tasks after checking the number of polling iterations by using the "transport.jms.IdleTaskLimit" property.

Setup a WSO2 EI 6.1.1 instance with ActiveMQ and used following proxy service in order to test the behavior of the property.

<?xml version="1.0" encoding="UTF-8"?><proxy xmlns="http://ws.apache.org/ns/synapse" name="JmsProxy" startOnLoad="true" statistics="disable" trace="disable" transports="jms">
    <target>
        <inSequence>
            <property name="OUT_ONLY" value="true"/>
            <property name="FORCE_SC_ACCEPTED" scope="axis2" value="true"/>
            <drop/>
        </inSequence>
    </target>
    <parameter name="transport.jms.Destination">sampleQueue</parameter>
    <parameter name="transport.jms.ConcurrentConsumers">5</parameter>
    <parameter name="transport.jms.MaxConcurrentConsumers">10</parameter>
    <parameter name="transport.jms.IdleTaskLimit">4</parameter>
    <description/>
</proxy>

With the following configurations, I observed the concurrent consumer count from the ActiveMQ management console and identified that the concurrent consumer count is not decreasing when we set the transport.jms.ConcurrentConsumers property value to 1.

    <parameter name="transport.jms.Destination">sampleQueue</parameter>
    <parameter name="transport.jms.ConcurrentConsumers">1</parameter>
    <parameter name="transport.jms.MaxConcurrentConsumers">10</parameter>
    <parameter name="transport.jms.IdleTaskLimit">4</parameter>

But when we set the transport.jms.ConcurrentConsumers property value to a value other than 1, tasks are deactivated once the load is decreasing and work as expected.

Furthermore, In the following code, I identified that the implemented logic does not work as expected with the IdleTaskCount when we set the ConcurrentConsumers as 1.

https://github.com/wso2/wso2-axis2-transports/blob/master/modules/jms/src/main/java/org/apache/axis2/transport/jms/ServiceTaskManager.java#L464

RabbitMQMessageReceiver always remove message

Description:
When the variable SET_ROLLBACK_ONLY exist the message is deleted equally from the server.

<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="Rabbit_ReadMessage"
       transports="rabbitmq"
       startOnLoad="true">
   <description/>
   <target>
      <inSequence>
             ---- Consume Message ----
      </inSequence>
      <faultSequence>
         <property name="SET_ROLLBACK_ONLY" value="true" scope="axis2"/>
         <log level="full" category="ERROR">
            <property name="message" value="Message could not be delivered"/>
            <property name="error_code" expression="$ctx:ERROR_CODE"/>
            <property name="error_message" expression="$ctx:ERROR_MESSAGE"/>
            <property name="error_detail" expression="$ctx:ERROR_DETAIL"/>
         </log>
      </faultSequence>
   </target>
   <parameter name="rabbitmq.queue.routing.key">Log</parameter>
   <parameter name="rabbitmq.exchange.name">amq.direct</parameter>
   <parameter name="rabbitmq.queue.name">LogQueue</parameter>
   <parameter name="rabbitmq.connection.factory">AMQPConnectionFactory</parameter>
   <parameter name="rabbitmq.message.content.type">application/xml</parameter>
</proxy>

With the variable SET_ROLLBACK_ONLY setted in the fault sequence, I expect that the message will not be removed, but it doesn't happen

Suggested Labels:
I suggest adding the tested following lines of code to the class RabbitMQMessageReceiver.java

 Object o = msgContext.getProperty(BaseConstants.SET_ROLLBACK_ONLY);
            if (o != null) {
                if ((o instanceof Boolean && ((Boolean) o)) ||
                        (o instanceof String && Boolean.valueOf((String) o))) {
                            return false;
                }
            }

Suggested Assignees:

Affected Product Version:
axis2_transport_rabbitmq 2v22

OS, DB, other environment details and versions:
Windows, JDK 8

Steps to reproduce:

Related Issues:
wso2/product-ei#2210
product-ei

Upgrade Dependency Versions

  • jacoco-maven-plugin from 0.8.0 to 0.8.4 #234
  • aspectjweaver from 1.8.5 to 1.9.4 #233
  • aspectjrt from 1.8.5 to 1.9.4 #232
  • maven-bundle-plugin from 1.4.0 to 4.2.0 #229
  • commons-lang from 2.3 to 2.6 #228
  • org.eclipse.paho.client.mqttv3 from 1.2.0 to 1.2.1 #227
  • axis2.version from 1.6.1-wso2v35 to 1.7.9 #226
  • maven-clean-plugin from 2.2 to 3.1.0 #223
  • commons-io from 2.0 to 2.6 #222

Properly closing the connections in the pool when there are issues with any connection

Description:
The code in [1] only clears the map which holds JMS connections when there are any issues with connections. We need to close individual connections as well. Otherwise, those connections will be kept as it is at the JMS server side and consume resources.

    /**
     * Clear the shared connection map due to stale connections
     */
    private synchronized void clearSharedConnections() {
        sharedConnectionMap.clear();
        lastReturnedConnectionIndex = 0;
    }

[1] https://github.com/wso2/wso2-axis2-transports/blob/v2.0.0-wso2v18/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSConnectionFactory.java#L565-L568

JMS_MESSAGE_TYPE & JMS_TYPE

Description:
JMS_TYPE not work on send message
why use JMS_MESSAGE_TYPE to set jms type on sender, and use JMS_TYPE on get jms type
Suggested Labels:
support both of them

Suggested Assignees:

Affected Product Version:

OS, DB, other environment details and versions:

Steps to reproduce:

Related Issues:

JMS Delivery mode is permanently set to PERSISTENCE in axis2-transports-1.1.1-wso2v2

Description:
The class JMSMessageSender set delivery mode as PERSISTENCE without considering the delivery mode received in the request.
Please refer :

Affected Product Version:
axis2-transports-1.1.1-wso2v2

OS, DB, other environment details and versions:
N/A

Steps to reproduce:
Send a JMS message request with the property to set JMS.DeliveryMode to Non-Persistence.
The delivery mode will still be set as Persistence.

Wrong property read from configuration and assigned to variable.

Description:
JMSConstants.PARAM_RECON_MAX_DURATION is read from configuration. After NOT NULL check, it's value gets overriden by JMSConstants.JMS_PROXY_THROTTLE_PER_MIN which cause

java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because "value" is null

if jms.proxy.throttle.limitPerMinute is not defined.

Affected line of code:

https://github.com/wso2/wso2-axis2-transports/blob/3c5eb3484699e5f827ded7f1b8755b55dbb1c3a1/modules/jms/src/main/java/org/apache/axis2/transport/jms/ServiceTaskManagerFactory.java#L127C29-L127C110

WSO2 gateway-work "HTTPS-Sender I/O dispatcher" thread increases without limit

Hello everyone!
When I was using the wso2 (1.9.0) component, my jvm thread number has been growing, and now it has reached more than 2,000. In the end, too many threads will cause memory overflow. I have a limit on the configuration file "passthru-http.properties", but it has no effect. Has anyone encountered such a situation?

MSMQ - axi2-transport jar doesn't contain org.apache.camel package

This leads to throw the following exception

ERROR - NativeWorkerPool Uncaught exception
java.lang.NoClassDefFoundError: org/apache/camel/component/msmq/native_support/MsmqQueue
        at org.apache.axis2.transport.msmq.util.MSMQCamelClient.open(MSMQCamelClient.java:100)
        at org.apache.axis2.transport.msmq.MSMQSender.sendOverMSMQ(MSMQSender.java:144)
        at org.apache.axis2.transport.msmq.MSMQSender.sendMessage(MSMQSender.java:93)
        at org.apache.axis2.transport.base.AbstractTransportSender.invoke(AbstractTransportSender.java:112)
        at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442)
        at org.apache.axis2.description.OutOnlyAxisOperationClient.executeImpl(OutOnlyAxisOperation.java:297)
        at org.apache.axis2.client.OperationClient.execute(OperationClient.java:149)
        at org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPClient.java:595)
        at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:83)
        at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:548)
        at org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:382)
        at org.apache.synapse.endpoints.AddressEndpoint.send(AddressEndpoint.java:65)
        at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:121)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:97)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:59)
        at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158)
        at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:213)
        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
        at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:404)
        at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:151)
        at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: org.apache.camel.component.msmq.native_support.MsmqQueue cannot be found by axis2-transport-msmq_1.0.0
        at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
        at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

Unable to set TCP keepalive for TCP listeners

Description:
There are no way to enable / disable TCP keepalive option for wso2 tcp listeners. This caused that wso2 leaves invalid TCP connections in ESTABLISHED state forever. Therefore I strongly propose use setKeepAlive() for Socket object in TCPServer.java before creating new TCP worker.

Affected Product Version:
WSO2-integrator 6.5.0

OS, DB, other environment details and versions:
Linux docker.

Support ContentTypeProperty from axis2.xml

Description:
Currently, there is no way set the ContentTypeProperty globally. This is to support it by providing it from axis2.xml via JMSSender properties

Affected Product Version:
axis2-transports-1.1.1-wso2v2

org.apache.axis2.rpc.receivers.RPCMessageReceiver Exception occurred while trying to invoke service method getUserInfo

Description:
unable to load the admin management console. can see following error in the wso2carbon log.

TID: [-1234] [] [2018-05-18 08:23:53,707] ERROR {org.apache.axis2.rpc.receivers.RPCMessageReceiver} - Exception occurred while trying to invoke service method getUserInfo
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:178)
at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:117)
at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:110)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at org.apache.axis2.transport.local.LocalTransportReceiver.processMessage(LocalTransportReceiver.java:169)
at org.apache.axis2.transport.local.LocalTransportReceiver.processMessage(LocalTransportReceiver.java:82)
at org.wso2.carbon.core.transports.local.CarbonLocalTransportSender.finalizeSendWithToAddress(CarbonLocalTransportSender.java:45)
at org.apache.axis2.transport.local.LocalTransportSender.invoke(LocalTransportSender.java:77)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:430)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:225)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:149)
at org.wso2.carbon.core.commons.stub.loggeduserinfo.LoggedUserInfoAdminStub.getUserInfo(LoggedUserInfoAdminStub.java:187)
at org.wso2.carbon.ui.AbstractCarbonUIAuthenticator.setUserAuthorizationInfo(AbstractCarbonUIAuthenticator.java:461)
at org.wso2.carbon.ui.AbstractCarbonUIAuthenticator.handleSecurity(AbstractCarbonUIAuthenticator.java:230)
at org.wso2.carbon.ui.BasicAuthUIAuthenticator.authenticate(BasicAuthUIAuthenticator.java:83)
at org.wso2.carbon.ui.CarbonUILoginUtil.handleLogin(CarbonUILoginUtil.java:380)
at org.wso2.carbon.ui.CarbonSecuredHttpContext.handleSecurity(CarbonSecuredHttpContext.java:244)
at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:60)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:68)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.wso2.carbon.ui.filters.CSRFPreventionFilter.doFilter(CSRFPreventionFilter.java:88)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.wso2.carbon.ui.filters.CRLFPreventionFilter.doFilter(CRLFPreventionFilter.java:59)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:61)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:99)
at org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47)
at org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:57)
at org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47)
at org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:62)
at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:159)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1739)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1698)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ThreadDeath
at java.lang.Thread.stop(Thread.java:853)
at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.handleStuckThread(CarbonStuckThreadDetectionValve.java:125)
at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.backgroundProcess(CarbonStuckThreadDetectionValve.java:178)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1368)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1546)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1556)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1524)
... 1 more

Suggested Labels:

Suggested Assignees:

Affected Product Version:
wso2is 5.1.0

OS, DB, other environment details and versions:
Linux, H2

Steps to reproduce:

Related Issues:

Unable to change poolSize for Axis2 RabbitMQ Transport

Description:

Found below issues in Axis2 RabbitMQ Transport,

  • The thread named HotDeploymentSchedulerThread does not have a timeout if it would come to the “Waiting on Condition” state
  • The following parameter is not set properly to customize RabbitMQ connections for a particular ConnectionFactory
    public RabbitMQConnectionPool(RabbitMQConnectionFactory factory, int poolSize) {
        super(factory);
        this.setTestOnBorrow(true);
        this.setMaxTotal(poolSize);
        this.setMaxTotalPerKey(poolSize);
    }
  • The Toml file configuration for increasing pool size value does not reflect in the codebase
[transport.rabbitmq]
sender_enable = true
listener_enable = true

[[transport.rabbitmq.listener]]
name = "AMQPConnectionFactory"
parameter.hostname = "localhost"
parameter.port = 5672
parameter.username = "guest"
parameter.password = "guest"
parameter.retry_interval = "10s"
parameter.retry_count = 5
parameter.connection_pool_size = 100

Steps to reproduce:

Please follow the below steps to reproduce the above mentioned issues.

  1. Create 10 sample RabbitMQ proxy listeners
  2. Update the MI v4.1.0 to update level 52
  3. Setup a RabbitMQ v3.12.6 or v3.11.13
  4. Enable RabbitMQ Listener configuration
  5. Deploy above created RabbitMQ proxy listeners

Expected behaviour:

  • should be able to deploy all the RabbitMQ proxy listeners without any issue
  • If the RabbitMQ proxy listeners were in separate CAR files(such as 5 CARs each CAR has 2 RabbitMQ proxy listeners) all the CAR files should be deployed

Current behaviour:

  • only 8 RabbitMQ proxy listeners will be deployed
  • If the RabbitMQ proxy listeners were in separate CAR files(such as 5 CARs each CAR has 2 RabbitMQ proxy listeners) then only 4 CARs will be deployed

Thank you,
Pasindu G.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.