Petals CDK

StackOverflowError occurs when the JBI message processor thread pool is exhausted

Details

  • Type: Bug Bug
  • Status: Resolved Resolved
  • Priority: Critical Critical
  • Resolution: Fixed
  • Affects Version/s: 5.1.3
  • Fix Version/s: 5.1.4, 5.3.0
  • Component/s: runtime
  • Security Level: Public
  • Description:
    Hide

    The following error occurs when the JBI message processor thread pool is exhausted, and no more message is processed:

    Exception in thread "petals-bc-soap -JBI Acceptor Thread #2" java.lang.StackOverflowError
    	at sun.misc.Unsafe.compareAndSwapInt(Native Method)
    	at java.util.concurrent.locks.AbstractQueuedSynchronizer.compareAndSetState(AbstractQueuedSynchronizer.java:537)
    	at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:183)
    	at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:262)
    	at java.util.concurrent.ThreadPoolExecutor.addIfUnderMaximumPoolSize(ThreadPoolExecutor.java:718)
    	at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:657)
    	at java.util.concurrent.ThreadPoolExecutor$DiscardOldestPolicy.rejectedExecution(ThreadPoolExecutor.java:1813)
    	at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:767)
    	at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:658)
    	at java.util.concurrent.ThreadPoolExecutor$DiscardOldestPolicy.rejectedExecution(ThreadPoolExecutor.java:1813)
    	at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:767)
    	at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:658)
    	at java.util.concurrent.ThreadPoolExecutor$DiscardOldestPolicy.rejectedExecution(ThreadPoolExecutor.java:1813)
    	at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:767)
    	at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:658)
    	at java.util.concurrent.ThreadPoolExecutor$DiscardOldestPolicy.rejectedExecution(ThreadPoolExecutor.java:1813)
            ...

    Reproducer, with a service proxy based on the BC SOAP

    • configure the BC SOAP with:
      <ns2:acceptor-pool-size>2</ns2:acceptor-pool-size>
      <ns2:processor-pool-size>2</ns2:processor-pool-size>
      <ns2:processor-max-pool-size>4</ns2:processor-max-pool-size>
    • using SOAPUI, send several requests concurrently (~15 requests should be sufficient to get the error
    Show
    The following error occurs when the JBI message processor thread pool is exhausted, and no more message is processed:
    Exception in thread "petals-bc-soap -JBI Acceptor Thread #2" java.lang.StackOverflowError
    	at sun.misc.Unsafe.compareAndSwapInt(Native Method)
    	at java.util.concurrent.locks.AbstractQueuedSynchronizer.compareAndSetState(AbstractQueuedSynchronizer.java:537)
    	at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:183)
    	at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:262)
    	at java.util.concurrent.ThreadPoolExecutor.addIfUnderMaximumPoolSize(ThreadPoolExecutor.java:718)
    	at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:657)
    	at java.util.concurrent.ThreadPoolExecutor$DiscardOldestPolicy.rejectedExecution(ThreadPoolExecutor.java:1813)
    	at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:767)
    	at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:658)
    	at java.util.concurrent.ThreadPoolExecutor$DiscardOldestPolicy.rejectedExecution(ThreadPoolExecutor.java:1813)
    	at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:767)
    	at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:658)
    	at java.util.concurrent.ThreadPoolExecutor$DiscardOldestPolicy.rejectedExecution(ThreadPoolExecutor.java:1813)
    	at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:767)
    	at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:658)
    	at java.util.concurrent.ThreadPoolExecutor$DiscardOldestPolicy.rejectedExecution(ThreadPoolExecutor.java:1813)
            ...
    Reproducer, with a service proxy based on the BC SOAP
    • configure the BC SOAP with:
      <ns2:acceptor-pool-size>2</ns2:acceptor-pool-size>
      <ns2:processor-pool-size>2</ns2:processor-pool-size>
      <ns2:processor-max-pool-size>4</ns2:processor-max-pool-size>
    • using SOAPUI, send several requests concurrently (~15 requests should be sufficient to get the error
  • Environment:
    -

Issue Links

Activity

Transition Status Change Time Execution Times Last Executer Last Execution Date
New New Open Open
2h 38m
1
Christophe DENEUX
Thu, 5 Apr 2012 - 14:17:32 +0200
Open Open In Progress In Progress
8s
1
Christophe DENEUX
Thu, 5 Apr 2012 - 14:17:40 +0200
In Progress In Progress Resolved Resolved
28m 5s
1
Christophe DENEUX
Thu, 5 Apr 2012 - 14:45:45 +0200
Resolved Resolved Open Open
14d 1h 57m
1
Christophe DENEUX
Thu, 19 Apr 2012 - 16:43:33 +0200
Open Open In Progress In Progress
5s
1
Christophe DENEUX
Thu, 19 Apr 2012 - 16:43:38 +0200
In Progress In Progress Resolved Resolved
17s
1
Christophe DENEUX
Thu, 19 Apr 2012 - 16:43:55 +0200

People

Dates

  • Created:
    Thu, 5 Apr 2012 - 11:38:49 +0200
    Updated:
    Thu, 19 Apr 2012 - 16:43:55 +0200
    Resolved:
    Thu, 19 Apr 2012 - 16:43:55 +0200