Rafał Gała created CAMEL-14327:
----------------------------------

             Summary: Jt400PgmProducer doStop() method called on actively used 
instance
                 Key: CAMEL-14327
                 URL: https://issues.apache.org/jira/browse/CAMEL-14327
             Project: Camel
          Issue Type: Bug
          Components: camel-jt400
    Affects Versions: 3.0.0
            Reporter: Rafał Gała


Today I migrated to 3.0.0 version and there seems to be an issue with Service 
pooling for the Jt400PgmpProducer.

 

Here's what I have:

 
{code:java}
    from(
        "seda:someName?concurrentConsumers=2&size=10")
            
.to("jt400://{{as400.user}}:{{as400.password}}@{{as400.host}}/QSYS.LIB/PROGRAM.LIB/KFKEVR.SRVPGM?fieldsLength=200,2000,4,8,8,1000&outputFieldsIdx=0,1,2,3,4,5&connectionPool=#as400ConnectionPool&format=binary&procedureName=RECEIVEEVENT");
{code}
When concurrentConsumers attribute of seda endpoint is set to 1 everything 
works fine, but when it is greater than 1 then it looks like the evict method 
from MultiplePool class calls stop method on a Jt400PgmProducer instance that 
is still being used (the process method on it is still getting called). This 
results in nulling the iSeries object inside Jt400PgmProducer instance:
{code:java}
    @Override
    protected void doStop() throws Exception {
        if (iSeries != null) {
            LOG.info("Releasing connection to {}", getISeriesEndpoint());
            getISeriesEndpoint().releaseSystem(iSeries);
            iSeries = null;
        }
    }
{code}
and when the process method gets called later on this instance, it fails with 
NPE while constructing ServiceProgramCall:
{code:java}
    @Override
    public void process(Exchange exchange) throws Exception {
...
            pgmCall = new ServiceProgramCall(iSeries);
...            
{code}
 

I believe this may be related to producer caching in ServicePool class, some 
sort of key issue in the cache Map maybe?



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to