[ 
https://issues.apache.org/jira/browse/ARTEMIS-4105?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

john lilley updated ARTEMIS-4105:
---------------------------------
    Description: 
We have an application, which mostly interfaces with the vanilla JMS driver for 
Artemis, except for the connection factory.

In an attempt to work around ARTEMIS-4104, I investigated using per-connection 
thread pools as per 
[https://activemq.apache.org/components/artemis/documentation/latest/thread-pooling.html],
 in the hope that I could divide services in categories, and have each category 
use an independent thread pool.  Instead, I find that the application is 
completely dead.  Nothing is ever delivered to services.

Please tell me I'm just doing something stupid :)

To validate, build the attached project using maven 3.8 and JDK 17.  Run the 
Main, and ... nothing will happen after the requests are posted to the queue.

This is a very small change from the sample posted to ARTEMIS-4104, which runs 
(albeit with a deadlock issue) so I don't think anything is different other 
than the attempt to use multiple connections, each with its own thread pool.

PS: if this method 
{code:java}
public static Connection getConnection(String label) {
   return connections.computeIfAbsent(label, k -> {
      try {
         Connection connection = 
getConnectionFactory().createConnection("admin", "admin");
         connection.start();
         return connection;
      } catch (Exception ex) {
         throw new RuntimeException("Failed to make AMQ connection", ex);
      }
   });
} {code}
Is simply changed to
{code:java}
public static Connection getConnection(String label) {
   return connections.computeIfAbsent("", k -> {
...
} {code}
So everything gets the same connection, it works.  It also works if I don't 
call 

{{connectionFactory.setUseGlobalPools(false);}}

 

  was:
We have an application, which mostly interfaces with the vanilla JMS driver for 
Artemis, except for the connection factory.

In an attempt to work around ARTEMIS-4104, I investigated using per-connection 
thread pools as per 
https://activemq.apache.org/components/artemis/documentation/latest/thread-pooling.html,
 in the hope that I could divide services in categories, and have each category 
use an independent thread pool.  Instead, I find that the application is 
completely dead.  Nothing is ever delivered to services.

Please tell me I'm just doing something stupid :)

To validate, build the attached project using maven 3.8 and JDK 17.  Run the 
Main, and ... nothing will happen after the requests are posted to the queue.

 


> useGlobalPools=false or ActiveMQConnectionFactory.setUseGlobalPools(false) 
> makes for dead services
> --------------------------------------------------------------------------------------------------
>
>                 Key: ARTEMIS-4105
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-4105
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: ActiveMQ-Artemis-Native
>    Affects Versions: 2.27.1
>            Reporter: john lilley
>            Assignee: Clebert Suconic
>            Priority: Major
>         Attachments: amqtest.zip
>
>
> We have an application, which mostly interfaces with the vanilla JMS driver 
> for Artemis, except for the connection factory.
> In an attempt to work around ARTEMIS-4104, I investigated using 
> per-connection thread pools as per 
> [https://activemq.apache.org/components/artemis/documentation/latest/thread-pooling.html],
>  in the hope that I could divide services in categories, and have each 
> category use an independent thread pool.  Instead, I find that the 
> application is completely dead.  Nothing is ever delivered to services.
> Please tell me I'm just doing something stupid :)
> To validate, build the attached project using maven 3.8 and JDK 17.  Run the 
> Main, and ... nothing will happen after the requests are posted to the queue.
> This is a very small change from the sample posted to ARTEMIS-4104, which 
> runs (albeit with a deadlock issue) so I don't think anything is different 
> other than the attempt to use multiple connections, each with its own thread 
> pool.
> PS: if this method 
> {code:java}
> public static Connection getConnection(String label) {
>    return connections.computeIfAbsent(label, k -> {
>       try {
>          Connection connection = 
> getConnectionFactory().createConnection("admin", "admin");
>          connection.start();
>          return connection;
>       } catch (Exception ex) {
>          throw new RuntimeException("Failed to make AMQ connection", ex);
>       }
>    });
> } {code}
> Is simply changed to
> {code:java}
> public static Connection getConnection(String label) {
>    return connections.computeIfAbsent("", k -> {
> ...
> } {code}
> So everything gets the same connection, it works.  It also works if I don't 
> call 
> {{connectionFactory.setUseGlobalPools(false);}}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to