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 April 28, 2017 - Updated July 19, 2017

Have a question? Get answers now.

Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.