This is an automated email from the ASF dual-hosted git repository.
eshu11 pushed a commit to branch feature/GEODE-7130
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/feature/GEODE-7130 by this
push:
new 26ce9ea feature/GEODE-7130: rollback the timed out and expired
transaction.
26ce9ea is described below
commit 26ce9eafc8f362bf1b42b1a97304280d2e19b8c7
Author: eshu <[email protected]>
AuthorDate: Mon Aug 26 12:52:55 2019 -0700
feature/GEODE-7130: rollback the timed out and expired transaction.
---
.../java/org/apache/geode/internal/jta/GlobalTransaction.java | 3 ++-
.../org/apache/geode/internal/jta/TransactionManagerImpl.java | 8 ++++++--
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git
a/geode-core/src/main/java/org/apache/geode/internal/jta/GlobalTransaction.java
b/geode-core/src/main/java/org/apache/geode/internal/jta/GlobalTransaction.java
index 9d25e5d..a123497 100644
---
a/geode-core/src/main/java/org/apache/geode/internal/jta/GlobalTransaction.java
+++
b/geode-core/src/main/java/org/apache/geode/internal/jta/GlobalTransaction.java
@@ -623,7 +623,8 @@ public class GlobalTransaction {
try {
if (writer.infoEnabled())
writer.info(String.format("Transaction %s has timed out.", this));
-
TransactionManagerImpl.getTransactionManager().removeTranxnMappings(transactions);
+ TransactionManagerImpl.getTransactionManager()
+ .removeTranxnMappingsAndRollbackExpiredTransaction(transactions);
setStatus(Status.STATUS_NO_TRANSACTION);
} catch (Exception e) {
if (writer.severeEnabled())
diff --git
a/geode-core/src/main/java/org/apache/geode/internal/jta/TransactionManagerImpl.java
b/geode-core/src/main/java/org/apache/geode/internal/jta/TransactionManagerImpl.java
index 6eafedd..ad7e913 100644
---
a/geode-core/src/main/java/org/apache/geode/internal/jta/TransactionManagerImpl.java
+++
b/geode-core/src/main/java/org/apache/geode/internal/jta/TransactionManagerImpl.java
@@ -754,7 +754,7 @@ public class TransactionManagerImpl implements
TransactionManager, Serializable
}
}
- void removeTranxnMappings(List tranxns) {
+ void removeTranxnMappingsAndRollbackExpiredTransaction(List tranxns) {
Object[] threads = transactionMap.keySet().toArray();
int len = threads.length;
Object tx = null;
@@ -765,7 +765,11 @@ public class TransactionManagerImpl implements
TransactionManager, Serializable
removed = tranxns.remove(tx);
if (removed) {
transactionMap.remove(temp);
- globalTransactionMap.remove(tx);
+ GlobalTransaction globalTransaction = (GlobalTransaction)
globalTransactionMap.remove(tx);
+ try {
+ globalTransaction.rollback();
+ } catch (Exception ignore) {
+ }
}
}
}