You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by sk...@apache.org on 2006/09/14 00:45:22 UTC
svn commit: r443153 - in
/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel:
BrokerImpl.java StateManagerImpl.java
Author: skim
Date: Wed Sep 13 15:45:21 2006
New Revision: 443153
URL: http://svn.apache.org/viewvc?view=rev&rev=443153
Log:
fix for re-proxying of hashed types during commit / rollback
Modified:
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java?view=diff&rev=443153&r1=443152&r2=443153
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java Wed Sep 13 15:45:21 2006
@@ -135,6 +135,7 @@
private static final int FLAG_FLUSH_REQUIRED = 2 << 8;
private static final int FLAG_REMOTE_LISTENER = 2 << 9;
private static final int FLAG_RETAINED_CONN = 2 << 10;
+ private static final int FLAG_TRANS_ENDING = 2 << 11;
private static final Localizer _loc =
Localizer.forPackage(BrokerImpl.class);
@@ -1640,6 +1641,19 @@
}
}
+ /**
+ * Return whether the given transaction is ending, i.e. in the 2nd phase
+ * of a commit or rollback
+ */
+ boolean isTransactionEnding() {
+ beginOperation(true);
+ try {
+ return (_flags & FLAG_TRANS_ENDING) != 0;
+ } finally {
+ endOperation();
+ }
+ }
+
public boolean beginOperation(boolean syncTrans) {
lock();
try {
@@ -1722,6 +1736,7 @@
try {
assertActiveTransaction();
+ _flags |= FLAG_TRANS_ENDING;
endTransaction(status);
if (_sync != null)
_sync.afterCompletion(status);
@@ -1746,6 +1761,7 @@
} finally {
_flags &= ~FLAG_ACTIVE;
_flags &= ~FLAG_FLUSHED;
+ _flags &= ~FLAG_TRANS_ENDING;
if (_transEventManager != null
&& _transEventManager.hasEndListeners()) {
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java?view=diff&rev=443153&r1=443152&r2=443153
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java Wed Sep 13 15:45:21 2006
@@ -824,7 +824,8 @@
return;
boolean active = _broker.isActive();
- if (active) {
+ boolean ending = _broker.isTransactionEnding();
+ if (active && !ending) {
if (_broker.getOptimistic())
setPCState(_state.beforeOptimisticRead(this, field));
else