Petals BC SOAP

Can't create get an Axis service client from the pool

Details

  • Type: Bug Bug
  • Status: Resolved Resolved
  • Priority: Blocker Blocker
  • Resolution: Fixed
  • Affects Version/s: 4.0.3
  • Fix Version/s: 4.0.3
  • Component/s: None
  • Description:
    Hide

    When we call a WebService long time after its last call, the component returns the following error : "Can't create get an Axis service client from the pool".

    • We call the service a few time ==> OK
    • We the go to bed
    • When we try to call this service again ==> KO

    == Reproduction Note ==

    Launch the mock of the AD003-RecupIDsMissionsSigma-soapui-project.xml SOAPUI project
    Deploy the two service units
    Launch the load test of the AD003-Caller-soapui-project.xml project
    Stop the test after one minute or two
    Wait a few hours
    Try to call the service again

    Show
    When we call a WebService long time after its last call, the component returns the following error : "Can't create get an Axis service client from the pool".
    • We call the service a few time ==> OK
    • We the go to bed
    • When we try to call this service again ==> KO
    == Reproduction Note == Launch the mock of the AD003-RecupIDsMissionsSigma-soapui-project.xml SOAPUI project Deploy the two service units Launch the load test of the AD003-Caller-soapui-project.xml project Stop the test after one minute or two Wait a few hours Try to call the service again
  • Environment:
    Petals ESB 3.1
    Petals-BC-SOAP 4.0.3 SNAPSHOT (petals-bc-soap-4.0.3-20100704.073518-7)
  1. AD003-Caller-soapui-project.xml
    (19 kB)
    Charles Casadei
    Mon, 2 Aug 2010 - 16:57:53 +0200
  2. AD003-RecupIDsMissionsSigma-soapui-project.xml
    (67 kB)
    Charles Casadei
    Mon, 2 Aug 2010 - 16:57:53 +0200
  3. petals-bc-soap-4.0.3-SNAPSHOT.zip
    (16.84 MB)
    noddoux
    Tue, 21 Sep 2010 - 09:11:45 +0200
  4. sa-SOAP-AD003-RecupIDsMissionsSigma_EIP-consume.zip
    (1 kB)
    Charles Casadei
    Mon, 2 Aug 2010 - 16:57:53 +0200
  5. sa-SOAP-AD003-RecupIDsMissionsSigma_EIP-provide.zip
    (4 kB)
    Charles Casadei
    Mon, 2 Aug 2010 - 16:57:59 +0200

Activity

Charles Casadei made changes - Mon, 2 Aug 2010 - 14:26:36 +0200
Field Original Value New Value
Priority Major [ 3 ]
Assignee Nicolas Oddoux [ noddoux ] Charles Casadei [ ccasadei ]
Charles Casadei made changes - Mon, 2 Aug 2010 - 14:28:11 +0200
Link This issue blocks SPVEOLIAE-10 [ SPVEOLIAE-10 ]
Charles Casadei made changes - Mon, 2 Aug 2010 - 16:57:53 +0200
Charles Casadei made changes - Mon, 2 Aug 2010 - 16:57:59 +0200
Charles Casadei made changes - Mon, 2 Aug 2010 - 17:07:42 +0200
Description When we call a WebService long time after its last call, the component returns the following error : "Can't create get an Axis service client from the pool".
- We call the service a few time ==> OK
- We the go to bed :-)
- When we try to call this service again ==> KO
When we call a WebService long time after its last call, the component returns the following error : "Can't create get an Axis service client from the pool".
- We call the service a few time ==> OK
- We the go to bed :-)
- When we try to call this service again ==> KO

== Reproduction Note ==

Launch the mock of the AD003-RecupIDsMissionsSigma-soapui-project.xml SOAPUI project
Deploy the two service units
Launch the load test of the AD003-Caller-soapui-project.xml project
Stop the test after one minute or two
Wait a few hours
Try to call the service again
Hide
Charles Casadei added a comment - Tue, 3 Aug 2010 - 08:40:30 +0200 - edited

We have encountered this problem with other customers. After a long period without any call, the first call on a "provide" endpoint fails.

Show
Charles Casadei added a comment - Tue, 3 Aug 2010 - 08:40:30 +0200 - edited We have encountered this problem with other customers. After a long period without any call, the first call on a "provide" endpoint fails.
Charles Casadei made changes - Tue, 3 Aug 2010 - 08:40:30 +0200
Status New [ 10000 ] Open [ 10002 ]
Charles Casadei made changes - Tue, 3 Aug 2010 - 08:40:56 +0200
Assignee Charles Casadei [ ccasadei ] Nicolas Oddoux [ noddoux ]
Hide
Charles Casadei added a comment - Wed, 4 Aug 2010 - 15:11:36 +0200

You may find many "provides" service assemblies in the smb://192.168.1.4/pv00.vg00.projets/INGRID/Tests%20registry/su directory.

Show
Charles Casadei added a comment - Wed, 4 Aug 2010 - 15:11:36 +0200 You may find many "provides" service assemblies in the smb://192.168.1.4/pv00.vg00.projets/INGRID/Tests%20registry/su directory.
Hide
noddoux added a comment - Thu, 5 Aug 2010 - 10:41:51 +0200

The bug was not reproduced on our platform (with SoapUI as client)

Show
noddoux added a comment - Thu, 5 Aug 2010 - 10:41:51 +0200 The bug was not reproduced on our platform (with SoapUI as client)
Charles Casadei made changes - Fri, 6 Aug 2010 - 11:02:11 +0200
Priority Major [ 3 ] Blocker [ 1 ]
Charles Casadei made changes - Wed, 11 Aug 2010 - 09:20:03 +0200
Link This issue blocks SPPROSOF-2 [ SPPROSOF-2 ]
Hide
Emmanuel Manceau added a comment - Mon, 30 Aug 2010 - 11:37:00 +0200

Hello Nicolas,

This bus is not reproducible with SOAP UI mocks. It occurs only with real web services.

Regards,

Show
Emmanuel Manceau added a comment - Mon, 30 Aug 2010 - 11:37:00 +0200 Hello Nicolas, This bus is not reproducible with SOAP UI mocks. It occurs only with real web services. Regards,
Hide
noddoux added a comment - Mon, 20 Sep 2010 - 10:52:39 +0200

Reproduction steps:
1/ Install the BC SOAP and a SU provide
2/ Launch a request (it should work)
3/ Uninstall the SU provide
4/ Launch the same request (it should still work)
5/ Wait at least 30 minutes
6/ Launch the request (it should not work)

Analysis:
The service client pool is not deleted when removing a SU provide (its factory keeps a reference on the provide instance of the SU which is deleted). The service client pool is stored in a hash table, the key of the hash table of the address of the partner service, the operation and the MEP. Consequently when the same SU is reinstalled, the same pool is reused.
After reinstalling, if there is still a service client in the pool, it is used and it works. But this service client is removed from the pool by the garbage collector after 30 minutes so a new service client is created with the pool factory with the reference on the old provide instance in case of a new request. It crashes because the provide instance is used as a key of a hash table and it returns null (this hash table had been cleaned when removing the SU).

Show
noddoux added a comment - Mon, 20 Sep 2010 - 10:52:39 +0200 Reproduction steps: 1/ Install the BC SOAP and a SU provide 2/ Launch a request (it should work) 3/ Uninstall the SU provide 4/ Launch the same request (it should still work) 5/ Wait at least 30 minutes 6/ Launch the request (it should not work) Analysis: The service client pool is not deleted when removing a SU provide (its factory keeps a reference on the provide instance of the SU which is deleted). The service client pool is stored in a hash table, the key of the hash table of the address of the partner service, the operation and the MEP. Consequently when the same SU is reinstalled, the same pool is reused. After reinstalling, if there is still a service client in the pool, it is used and it works. But this service client is removed from the pool by the garbage collector after 30 minutes so a new service client is created with the pool factory with the reference on the old provide instance in case of a new request. It crashes because the provide instance is used as a key of a hash table and it returns null (this hash table had been cleaned when removing the SU).
Hide
noddoux added a comment - Tue, 21 Sep 2010 - 09:11:45 +0200

The problem should be corrected with this snapshot of the SOAP component.

Show
noddoux added a comment - Tue, 21 Sep 2010 - 09:11:45 +0200 The problem should be corrected with this snapshot of the SOAP component.
Transition Status Change Time Execution Times Last Executer Last Execution Date
New New Open Open
18h 15m
1
Charles Casadei
Tue, 3 Aug 2010 - 08:40:30 +0200
Open Open In Progress In Progress
3h 2m
1
noddoux
Tue, 3 Aug 2010 - 11:42:58 +0200
In Progress In Progress Open Open
22h 11m
1
noddoux
Wed, 4 Aug 2010 - 09:54:53 +0200
Open Open In Progress In Progress
23h 6m
1
noddoux
Thu, 5 Aug 2010 - 09:01:23 +0200
In Progress In Progress Open Open
59s
1
noddoux
Thu, 5 Aug 2010 - 09:02:22 +0200
Open Open In Progress In Progress
1h 38m
1
noddoux
Thu, 5 Aug 2010 - 10:40:38 +0200
In Progress In Progress Resolved Resolved
1m 13s
1
noddoux
Thu, 5 Aug 2010 - 10:41:51 +0200
Resolved Resolved Open Open
22d 7h 16m
1
noddoux
Fri, 27 Aug 2010 - 17:58:38 +0200
Open Open In Progress In Progress
23d 16h 54m
1
noddoux
Mon, 20 Sep 2010 - 10:52:46 +0200
In Progress In Progress Resolved Resolved
3h 39m
1
noddoux
Mon, 20 Sep 2010 - 14:32:08 +0200