Output Post Processor (OPP) in Oracle Applications

The Output Post Processor in Concurrent Processing

Concurrent Processing now uses the Output Post Processor (OPP) to enforce post-processing actions for concurrent requests. Post-processing actions are actions taken on concurrent request output. An example of a post-processing action is that used in Concurrent Processing support of XML Publisher. If a request is submitted with an XML Publisher template specified as a layout for the concurrent request output, then after the concurrent manager finishes running the concurrent program, it will contact the OPP to apply the XML Publisher template and create the final output. OPP runs as a service that can be managed through Oracle Applications Manager (OAM) from the System Activity page (Navigation: Applications Dashboard > Applications Service (from the dropdown list) > Go).

Applications Services in Oracle Applications Manager
There should always be at least one OPP process active in the system. If no OPP service is available to process concurrent requests, completed requests that require OPP post-processing will complete with a status of Warning.
One service instance of the OPP service is seeded by default. This seeded OPP service instance has one workshift with one process. A concurrent manager contacts an available OPP process when a running concurrent request needs an OPP post-processing action. Concurrent managers use a local OPP process (on the same node) by default, but will choose a remote OPP if no local OPP process is available. You can view details of the OPP service instance(s) in OAM.

Service Instances for the Output Post Processor The OPP Service is multi-threaded and will start a new thread for each concurrent request it processes. You can control the number of simultaneous threads for an OPP Service Instance by adjusting the Threads per Process parameter for the instance. If all the OPP process have reached their respective maximum number of threads, the requests waiting to be processed remain in a queue to be processed as soon as threads become available. If request throughput has become slow, you may want to increase the number of Threads per Process for the OPP. We recommend you keep the number of Threads per Process between 1 and 20. You may find that you get even better performance by increasing the number of OPP processes.
Workshifts in Oracle Applications Manager Similar to other managers, you can adjust the number of processes and workshifts for an OPP service instance. You may find you need more than one OPP process to handle the request workload. You can update the workshifts for the OPP service instance within OAM.

Some of the common errors encountered with OPP are related to Java memory .  The concurrent request log shows error:

Beginning post-processing of request 5134739 on node ORACAPP1 at 26-JAN-2010 09:24:14.
Post-processing of request 5134739 failed at 26-JAN-2010 09:24:40 with the error message:
One or more post-processing actions failed. Consult the OPP service log for details.


You might see in the OPP manager logs errors like :

at oracle.apps.fnd.cp.opp.OPPRequestThread.run(OPPRequestThread.java:172)
Caused by: java.lang.OutOfMemoryError: Java heap space 

 In such situations , you will have to increase the Java memory related to OPP .

First check how much memory is allocated for OPP process :


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:-mx1024m

The mx parameter shows the Max memory, which is 1GB in this case.
This is good enough for most, but depending on the size of data in output files, some reports might fail and you need to increase it. 

The OPP process memory can be increased by updating the FND_CP_SERVICES table as shown below :

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');

commit;
 Its advisable to shutdown the concurrent managers before updating the above and restarting after the update is complete .
There are also profile options related to OPP which control the amount of time a process waits for OPP before timing out.

Navigate to Profile - System.
b.  Query up the Concurrent:OPP Response Timeout profile.
Internal Name : CONC_PP_RESPONSE_TIMEOUT
Description : Specifies the amount of time a manager waits for OPP to respond to its request for post processing.
c.  Increase the current value.  For example, if the current value is 300 then increase to 600.
d.  Bounce the managers.
The above mentioned tricks should resolve general OPP based errors.

References :
Support.oracle.com 

Comments