Support Article
Current transaction aborted exception when running Extract Rule
SA-37225
Summary
User getting an exception while running Business Intelligence Exchange (BIX) extract, which is resulting in no extract being generated, though there are instances for extraction.
Error Messages
Log file error:
2017-03-24 12:16:09,780 [ PegaRULES-Batch-47] [ ] [ ] ( internal.access.ExtractImpl) ERROR
- SQL Exception could not set last update time
org.postgresql.util.PSQLException: ERROR: current transaction is aborted, commands ignored until end of transaction block
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2198)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1927)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:562)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:420)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:366)
at com.pega.pegarules.data.internal.store.DatabasePreparedStatementImpl.executeUpdate(DatabasePreparedStatementImpl.java:458)
at com.pega.pegarules.data.internal.access.ExtractImpl.writeLastUpdateToDb(ExtractImpl.java:1405)
at com.pega.pegarules.data.internal.access.ExtractImpl.doExtract(ExtractImpl.java:1865)
at com.pega.pegarules.data.internal.access.ExtractImpl.runExtract(ExtractImpl.java:1149)
at com.pega.pegarules.data.internal.access.ExtractImpl.run(ExtractImpl.java:990)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.performTargetActionWithLock(PRSessionProviderImpl.java:1290)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.doWithRequestorLocked(PRSessionProviderImpl.java:1038)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.doWithRequestorLocked(PRSessionProviderImpl.java:847)
at com.pega.pegarules.data.internal.access.ExtractImpl.runEngineExtract(ExtractImpl.java:973)
at com.pega.pegarules.data.internal.access.DatabaseImpl.executeExtract(DatabaseImpl.java:5662)
at com.pega.pegarules.session.internal.mgmt.Executable.executeExtract(Executable.java:8395)
at com.pegarules.generated.activity.ra_action_runextract_7eb17a5ada24845605c3d982093ca8a6.step1_circum0(ra_action_runextract_7eb17a5ada24845605c3d982093ca8a6.java:169)
at com.pegarules.generated.activity.ra_action_runextract_7eb17a5ada24845605c3d982093ca8a6.perform(ra_action_runextract_7eb17a5ada24845605c3d982093ca8a6.java:69)
at com.pega.pegarules.session.internal.mgmt.Executable.doActivity(Executable.java:3527)
at com.pega.pegarules.session.internal.mgmt.base.ThreadRunner.runActivitiesAlt(ThreadRunner.java:646)
at com.pega.pegarules.session.internal.mgmt.base.ThreadRunner.runActivities(ThreadRunner.java:572)
at com.pega.pegarules.session.internal.mgmt.PRThreadImpl.runActivities(PRThreadImpl.java:459)
at com.pega.pegarules.session.internal.async.agent.QueueProcessor.executeBatchTask(QueueProcessor.java:257)
at com.pega.pegarules.session.internal.async.agent.QueueProcessor.execute(QueueProcessor.java:321)
at com.pega.pegarules.session.internal.async.BatchRequestorTask.run(BatchRequestorTask.java:980)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.performTargetActionWithLock(PRSessionProviderImpl.java:1290)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.doWithRequestorLocked(PRSessionProviderImpl.java:1038)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.doWithRequestorLocked(PRSessionProviderImpl.java:920)
at com.pega.pegarules.session.internal.async.BatchRequestorTask.run(BatchRequestorTask.java:697)
at com.pega.jsr166backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:991)
at com.pega.jsr166backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:532)
at java.lang.Thread.run(Thread.java:745)
Steps to Reproduce
Not Applicable
Root Cause
When BIX extraction is run, along with the extraction two other transactions or queries would get executed at the database level.
One for inserting data into pr_extract_time table and other one to update existing records in pr_extract_time table.
In both the case "pr_extract_time" is the one which gets modified based on the extract run.
As there are not enough privileges to allow these transactions using the database user which is configured in the current database rule, the transaction is failing.
There is another warning pertaining to the data type of pxExtractDateTime column as well, which has to be taken care of at the database level.
Resolution
Perform the following local-change steps:
1. Make sure that the user which is used to connect to the database has enough privileges to insert and update the table "pr_extract_time".
2. To overcome the issue with data type, drop the column prExtractDateTime, as there is not much data in this column and recreate the column manually.
Published July 19, 2017 - Updated October 8, 2020
Have a question? Get answers now.
Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.