Adapter.jms.receive.threads > 1 Causes Database Contention

(Doc ID 2394398.1)

Last updated on MAY 10, 2018

Applies to:

Oracle SOA Suite - Version 12.2.1.3.0 and later
Information in this document applies to any platform.

Symptoms

Database contention in soa-infra while consuming messages with multiple threads (adapter.jms.receive.threads >1) using JMS adapter.

ERROR
-----------------------

Blocking sessions -> SQL-Id: enq: 1xx78t8tf9278

Details for 1xx78t8tf9278:

SELECT FLOW_ID, ACTIVE_COMPONENT_INSTANCES, ADMIN_STATE, COMPOSITE_SCA_ENTITY_ID, CONVERSATION_ID, FLOW_CORRELATION_ID, CREATED_BY, CREATED_TIME,
ECID, PROPERTIES, PURGEABLE, RECOVERABLE_FAULTS, RESEQUENCER, SCA_PARTITION_ID, TENANT_ID, TEST_CASE, TEST_RUN_ID, TEST_RUN_NAME, TEST_SUITE,
TITLE, UNHANDLED_FAULTS, UPDATED_BY, UPDATED_TIME, VERSION
FROM SCA_FLOW_INSTANCE
WHERE (FLOW_ID = :1 ) FOR UPDATE

Top Activity by Waits Wait event is enq: ”TX - row lock contention”

STEPS
-----------------------
The issue can be reproduced at will with the following steps:

1. Use simple soa composites to en-queue and de-queue messages using a JMS adapter.

2. Perform a load test using the following items:

1k message size, NumberOfIterations="1600" MilliSecondsBetweenIterations="370" NumberOfThreads="10"
JMS adapter property set to 3 (adapter.jms.receive.threads=3).

3. Observe the contention on the database - the select above will return ”TX - row lock contention”.

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms