Create Settlement Batches Output is Empty / XDO Logs Shows "OutOfMemoryError: Java heap space"

(Doc ID 2035016.1)

Last updated on SEPTEMBER 02, 2016

Applies to:

Oracle Payments - Version 12.1.3 and later
Information in this document applies to any platform.

Symptoms

Find that Create Settlement Batches generates an empty output file.  The file is created but it has zero bytes.  A settlement batches is successfully created.  This happened twice with two batches.  One thing that have in common is that the number of receipts/transactions in the batch is large.  The Create Settlement Batches request log does not show any errors. 

XDO debug logs were generated and showed a "java.lang.OutOfMemoryError: Java heap space" error:

[072015_041539949][oracle.apps.xdo.template.EFTGeneratorProcessor][STATEMENT]    Log file 'xdo_072015_041536289_eft_out3.eft' is created.
[072015_041609678][][EXCEPTION] java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at oracle.apps.xdo.common.xml.XSLT10gR1.invokeProcessXSL(XSLT10gR1.java:677)
at oracle.apps.xdo.common.xml.XSLT10gR1.transform(XSLT10gR1.java:425)
at oracle.apps.xdo.common.xml.XSLT10gR1.transform(XSLT10gR1.java:307)
at oracle.apps.xdo.common.xml.XSLTWrapper.transform(XSLTWrapper.java:278)
at oracle.apps.xdo.template.eft.EFTGenerator.generate(EFTGenerator.java:168)
at oracle.apps.xdo.template.eft.EFTGenerator.process(EFTGenerator.java:150)
at oracle.apps.xdo.template.EFTGeneratorProcessor.process(EFTGeneratorProcessor.java:276)
at oracle.apps.xdo.oa.schema.server.TemplateHelper.runProcessTemplate(TemplateHelper.java:6135)
at oracle.apps.xdo.oa.schema.server.TemplateHelper.processTemplate(TemplateHelper.java:3333)
at oracle.apps.iby.engine.ExtractFormatter.applyFormat(ExtractFormatter.java:183)
at oracle.apps.iby.engine.ExtractFormatter.applyFormat(ExtractFormatter.java:60)
at oracle.apps.iby.engine.ExtractFormatter.applyFormat(ExtractFormatter.java:240)
at oracle.apps.iby.payment.proc.BatchEFTPayment.closeBatch(BatchEFTPayment.java:951)
at oracle.apps.iby.scheduler.SchedEFTBatchClose.closeEFTBatch(SchedEFTBatchClose.java:558)
at oracle.apps.iby.scheduler.SchedEFTBatchClose.schedPmt(SchedEFTBatchClose.java:421)
at oracle.apps.iby.scheduler.Scheduler.doProcess(Scheduler.java:326)
at oracle.apps.iby.scheduler.Scheduler.init(Scheduler.java:423)
at oracle.apps.iby.scheduler.SchedInitiator.runProgram(SchedInitiator.java:215)
at oracle.apps.fnd.cp.request.Run.main(Run.java:157)
Caused by: java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2367)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:130)
at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:114)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:415)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at java.lang.Throwable.toString(Throwable.java:481)
at oracle.xdo.parser.v2.XSLExtFunctions.callStaticMethod(XSLExtFunctions.java:115)
at oracle.xdo.parser.v2.XPathExtFunction.evaluateMethod(XPathExtFunction.java:307)
at oracle.xdo.parser.v2.XPathExtFunction.evaluate(XPathExtFunction.java:226)
at oracle.xdo.parser.v2.XSLForEach.processAction(XSLForEach.java:113)
at oracle.xdo.parser.v2.XSLNode.processChildren(XSLNode.java:417)

 

The following ponits had been verified as per Note 1410160.1, but the output file was still empty:

Set the following properties from XML Publisher Administration:

    Responsibility=>Administration UI

    General => Temporary directory => \tmp
    This could be any directory with full read and write access

    FO Processing=>
    Use XML Publisher's XSLT processor =>true
    Enable scalable feature of XSLT processor=> true
    Enable XSLT runtime optimization=>true

Check the current OPP JVM Heap size using following SQL query:

    SQL> select DEVELOPER_PARAMETERS
    from FND_CP_SERVICES
    where SERVICE_ID = (select MANAGER_TYPE from FND_CONCURRENT_QUEUES where CONCURRENT_QUEUE_NAME = 'FNDCPOPP')

    DEVELOPER_PARAMETERS
    +-----------------------------------------------------+
    J:oracle.apps.fnd.cp.gsf.GSMServiceController:-mx512m

    Set the JVM Heap size using following SQL query
    SQL> update FND_CP_SERVICES
    set DEVELOPER_PARAMETERS = 'J:oracle.apps.fnd.cp.gsf.GSMServiceController:-mx2048m'
    where SERVICE_ID =
    (select MANAGER_TYPE
    from FND_CONCURRENT_QUEUES
    where CONCURRENT_QUEUE_NAME = 'FNDCPOPP');

results of query was:
J:oracle.apps.fnd.cp.gsf.GSMServiceController:-mx3072m

i.e. value is already higher than -mx2048m specified in the note.

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