OPA Interview Utility Library Produces Parsing Errors In A High Concurrency Environment

(Doc ID 2339617.1)

Last updated on DECEMBER 14, 2017

Applies to:

Oracle Policy Automation - Version 10.4.7 and later
Information in this document applies to any platform.

Symptoms

On :  10.4.7 version, Oracle Policy Automation

OPA interview utility library produces following parsing errors in a high concurrency environment when many threads (around 100) executed together:

Issue doesn't happen in a 1 thread setting. From tracing the stack, it appears this problem occurs in the com.oracle.determinations.interview.util.StringUtils.parse method when OPA is in the process of reading the XML list to populate drop down list control options.

ERROR
------------
com.oracle.determinations.interview.engine.exceptions.InterviewEngineException: java.lang.IllegalArgumentException: Cannot parse value as a number: 1.0
at com.oracle.determinations.interview.engine.plugins.listprovider.RulebaseListProvider.getListOptions(RulebaseListProvider.java:155)

STEPS
---------------
This can be reproduced by writing a simple program that calls the com.oracle.determinations.interview.util.StringUtils.parse method using many threads (100 works best) together in one go with a CountDownLatch.

The following messages will be produced if 100 threads are executed but doesn't happen in a 1 thread setting:

java.lang.IllegalArgumentException: Cannot parse value as a number: 10.0
at com.oracle.determinations.interview.util.StringUtils.parse(StringUtils.java:94)
at au.gov.dss.opa.interview.test.StringUtilConcurrencyTest$StringUtilRunnable.run(StringUtilConcurrencyTest.java:36)
at java.lang.Thread.run(Thread.java:745)

Changes

 

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