Author: deepak
Date: Sat Aug 1 10:12:39 2015 New Revision: 1693701 URL: http://svn.apache.org/r1693701 Log: (OFBIZ-6561) Reverted r#1668267 and related changes done in r1674064, 1669537 to fix the cache issue, Removed: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/transaction/TransactionListener.java Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/cache/Cache.java ofbiz/trunk/framework/entity/src/org/ofbiz/entity/cache/EntityCache.java ofbiz/trunk/framework/entity/src/org/ofbiz/entity/cache/EntityListCache.java ofbiz/trunk/framework/entity/src/org/ofbiz/entity/transaction/TransactionUtil.java Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/cache/Cache.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/cache/Cache.java?rev=1693701&r1=1693700&r2=1693701&view=diff ============================================================================== --- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/cache/Cache.java (original) +++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/cache/Cache.java Sat Aug 1 10:12:39 2015 @@ -23,24 +23,25 @@ import java.util.List; import org.ofbiz.base.util.Debug; import org.ofbiz.base.util.UtilGenerics; import org.ofbiz.entity.GenericEntity; -import org.ofbiz.entity.GenericPK; import org.ofbiz.entity.GenericValue; +import org.ofbiz.entity.GenericPK; import org.ofbiz.entity.condition.EntityCondition; -import org.ofbiz.entity.transaction.TransactionUtil; public class Cache { public static final String module = Cache.class.getName(); - private final EntityCache entityCache; - private final EntityListCache entityListCache; - private final EntityObjectCache entityObjectCache; + protected EntityCache entityCache; + protected EntityListCache entityListCache; + protected EntityObjectCache entityObjectCache; + + protected String delegatorName; public Cache(String delegatorName) { + this.delegatorName = delegatorName; entityCache = new EntityCache(delegatorName); - entityListCache = new EntityListCache(delegatorName); entityObjectCache = new EntityObjectCache(delegatorName); - TransactionUtil.addListener(entityCache); + entityListCache = new EntityListCache(delegatorName); } public void clear() { Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/cache/EntityCache.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/cache/EntityCache.java?rev=1693701&r1=1693700&r2=1693701&view=diff ============================================================================== --- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/cache/EntityCache.java (original) +++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/cache/EntityCache.java Sat Aug 1 10:12:39 2015 @@ -18,12 +18,7 @@ *******************************************************************************/ package org.ofbiz.entity.cache; -import java.util.HashMap; import java.util.Iterator; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import javax.transaction.UserTransaction; import org.ofbiz.base.util.Debug; import org.ofbiz.base.util.cache.UtilCache; @@ -31,34 +26,15 @@ import org.ofbiz.entity.GenericPK; import org.ofbiz.entity.GenericValue; import org.ofbiz.entity.condition.EntityCondition; import org.ofbiz.entity.model.ModelEntity; -import org.ofbiz.entity.transaction.GenericTransactionException; -import org.ofbiz.entity.transaction.TransactionFactoryLoader; -import org.ofbiz.entity.transaction.TransactionListener; -import org.ofbiz.entity.transaction.TransactionUtil; -public class EntityCache extends AbstractCache<GenericPK, GenericValue> implements TransactionListener { +public class EntityCache extends AbstractCache<GenericPK, GenericValue> { public static final String module = EntityCache.class.getName(); - private final ConcurrentHashMap<UserTransaction, Map<GenericPK, GenericValue>> txCacheMap = new ConcurrentHashMap<UserTransaction, Map<GenericPK, GenericValue>>(); public EntityCache(String delegatorName) { super(delegatorName, "entity"); } public GenericValue get(GenericPK pk) { - try { - if (TransactionUtil.getStatus() == TransactionUtil.STATUS_ACTIVE) { - UserTransaction tx = TransactionFactoryLoader.getInstance().getUserTransaction(); - Map<GenericPK, GenericValue> tempCache = txCacheMap.get(tx); - if (tempCache != null) { - GenericValue value = tempCache.get(pk); - if (value != null) { - return value; - } - } - } - } catch (GenericTransactionException e) { - Debug.logWarning(e, "Exception thrown while getting transaction status: ", module); - } UtilCache<GenericPK, GenericValue> entityCache = getCache(pk.getEntityName()); if (entityCache == null) return null; return entityCache.get(pk); @@ -74,46 +50,18 @@ public class EntityCache extends Abstrac Debug.logWarning("Tried to put a value of the " + pk.getEntityName() + " entity in the BY PRIMARY KEY cache but this entity has never-cache set to true, not caching.", module); return null; } - pk.setImmutable(); + if (entity == null) { entity = GenericValue.NULL_VALUE; } else { // before going into the cache, make this value immutable entity.setImmutable(); } - try { - if (TransactionUtil.getStatus() == TransactionUtil.STATUS_ACTIVE) { - UserTransaction tx = TransactionFactoryLoader.getInstance().getUserTransaction(); - Map<GenericPK, GenericValue> tempCache = txCacheMap.get(tx); - if (tempCache != null) { - return tempCache.put(pk, entity); - } - } - } catch (GenericTransactionException e) { - Debug.logWarning(e, "Exception thrown while getting transaction status: ", module); - } UtilCache<GenericPK, GenericValue> entityCache = getOrCreateCache(pk.getEntityName()); return entityCache.put(pk, entity); } public void remove(String entityName, EntityCondition condition) { - try { - if (TransactionUtil.getStatus() == TransactionUtil.STATUS_ACTIVE) { - UserTransaction tx = TransactionFactoryLoader.getInstance().getUserTransaction(); - Map<GenericPK, GenericValue> tempCache = txCacheMap.get(tx); - if (tempCache != null) { - for (Map.Entry<GenericPK, GenericValue> entry : tempCache.entrySet()) { - GenericPK pk = entry.getKey(); - GenericValue value = entry.getValue(); - if (condition.entityMatches(value)) { - tempCache.remove(pk); - } - } - } - } - } catch (GenericTransactionException e) { - Debug.logWarning(e, "Exception thrown while getting transaction status: ", module); - } UtilCache<GenericPK, GenericValue> entityCache = getCache(entityName); if (entityCache == null) return; for (GenericPK pk: entityCache.getCacheLineKeys()) { @@ -128,17 +76,6 @@ public class EntityCache extends Abstrac } public GenericValue remove(GenericPK pk) { - try { - if (TransactionUtil.getStatus() == TransactionUtil.STATUS_ACTIVE) { - UserTransaction tx = TransactionFactoryLoader.getInstance().getUserTransaction(); - Map<GenericPK, GenericValue> tempCache = txCacheMap.get(tx); - if (tempCache != null) { - return tempCache.remove(pk); - } - } - } catch (GenericTransactionException e) { - Debug.logWarning(e, "Exception thrown while getting transaction status: ", module); - } UtilCache<GenericPK, GenericValue> entityCache = getCache(pk.getEntityName()); if (Debug.verboseOn()) Debug.logVerbose("Removing from EntityCache with PK [" + pk + "], will remove from this cache: " + (entityCache == null ? "[No cache found to remove from]" : entityCache.getName()), module); if (entityCache == null) return null; @@ -154,59 +91,4 @@ public class EntityCache extends Abstrac if (Debug.verboseOn()) Debug.logVerbose("Removing from EntityCache with PK [" + pk + "], found this in the cache: " + retVal, module); return retVal; } - - @Override - public void clear() { - try { - if (TransactionUtil.getStatus() == TransactionUtil.STATUS_ACTIVE) { - UserTransaction tx = TransactionFactoryLoader.getInstance().getUserTransaction(); - txCacheMap.remove(tx); - } - } catch (GenericTransactionException e) { - Debug.logWarning(e, "Exception thrown while getting transaction status: ", module); - } - super.clear(); - } - - @Override - public void remove(String entityName) { - try { - if (TransactionUtil.getStatus() == TransactionUtil.STATUS_ACTIVE) { - UserTransaction tx = TransactionFactoryLoader.getInstance().getUserTransaction(); - Map<GenericPK, GenericValue> tempCache = txCacheMap.get(tx); - if (tempCache != null) { - for (GenericPK pk : tempCache.keySet()) { - if (pk.getEntityName().equals(entityName)) { - tempCache.remove(pk); - } - } - } - } - } catch (GenericTransactionException e) { - Debug.logWarning(e, "Exception thrown while getting transaction status: ", module); - } - super.remove(entityName); - } - - @Override - public void update(UserTransaction tx, EventType notificationType) { - switch (notificationType) { - case BEGIN: - txCacheMap.put(tx, new HashMap<GenericPK, GenericValue>()); - break; - case COMMIT: - Map<GenericPK, GenericValue> tempCache = txCacheMap.remove(tx); - if (tempCache != null) { - for (Map.Entry<GenericPK, GenericValue> entry : tempCache.entrySet()) { - GenericPK pk = entry.getKey(); - GenericValue value = entry.getValue(); - UtilCache<GenericPK, GenericValue> entityCache = getOrCreateCache(pk.getEntityName()); - entityCache.put(pk, value); - } - } - break; - case ROLLBACK: - txCacheMap.remove(tx); - } - } } Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/cache/EntityListCache.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/cache/EntityListCache.java?rev=1693701&r1=1693700&r2=1693701&view=diff ============================================================================== --- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/cache/EntityListCache.java (original) +++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/cache/EntityListCache.java Sat Aug 1 10:12:39 2015 @@ -21,22 +21,18 @@ package org.ofbiz.entity.cache; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; -import javax.transaction.UserTransaction; - import org.ofbiz.base.util.Debug; import org.ofbiz.entity.GenericValue; import org.ofbiz.entity.condition.EntityCondition; import org.ofbiz.entity.model.ModelEntity; import org.ofbiz.entity.util.EntityUtil; -import org.ofbiz.entity.transaction.TransactionListener; -public class EntityListCache extends AbstractEntityConditionCache<Object, List<GenericValue>> implements TransactionListener { + +public class EntityListCache extends AbstractEntityConditionCache<Object, List<GenericValue>> { public static final String module = EntityListCache.class.getName(); - private final ConcurrentHashMap<UserTransaction, Map<Object, List<GenericValue>>> txCacheMap = new ConcurrentHashMap<UserTransaction, Map<Object, List<GenericValue>>>(); public EntityListCache(String delegatorName) { super(delegatorName, "entity-list"); @@ -91,28 +87,4 @@ public class EntityListCache extends Abs public static final Object getOrderByKey(List<String> orderBy) { return orderBy != null ? (Object) orderBy : "{null}"; } - - @Override - public void update(UserTransaction tx, EventType notificationType) { - /* - switch (notificationType) { - case BEGIN: - txCacheMap.put(tx, new HashMap<GenericPK, GenericValue>()); - break; - case COMMIT: - Map<Object, List<GenericValue>> tempCache = txCacheMap.remove(tx); - if (tempCache != null) { - for (Map.Entry<GenericPK, GenericValue> entry : tempCache.entrySet()) { - GenericPK pk = entry.getKey(); - GenericValue value = entry.getValue(); - UtilCache<GenericPK, GenericValue> entityCache = getOrCreateCache(pk.getEntityName()); - entityCache.put(pk, value); - } - } - break; - case ROLLBACK: - txCacheMap.remove(tx); - } - */ - } } Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/transaction/TransactionUtil.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/transaction/TransactionUtil.java?rev=1693701&r1=1693700&r2=1693701&view=diff ============================================================================== --- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/transaction/TransactionUtil.java (original) +++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/transaction/TransactionUtil.java Sat Aug 1 10:12:39 2015 @@ -27,7 +27,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.concurrent.Callable; -import java.util.concurrent.CopyOnWriteArrayList; import javax.sql.XAConnection; import javax.transaction.HeuristicMixedException; @@ -79,14 +78,7 @@ public class TransactionUtil implements // in order to improve performance allThreadsTransactionBeginStack and allThreadsTransactionBeginStackSave are only maintained when logging level INFO is on private static Map<Long, Exception> allThreadsTransactionBeginStack = Collections.<Long, Exception>synchronizedMap(new HashMap<Long, Exception>()); private static Map<Long, List<Exception>> allThreadsTransactionBeginStackSave = Collections.<Long, List<Exception>>synchronizedMap(new HashMap<Long, List<Exception>>()); - private static List<TransactionListener> listeners = new CopyOnWriteArrayList<TransactionListener>(); - public static void addListener(TransactionListener listener) { - if (listener != null && !listeners.contains(listener)) { - listeners.add(listener); - } - } - public static <V> V doNewTransaction(Callable<V> callable, String ifErrorMessage, int timeout, boolean printException) throws GenericEntityException { return noTransaction(inTransaction(callable, ifErrorMessage, timeout, printException)).call(); } @@ -171,9 +163,7 @@ public class TransactionUtil implements Debug.logError(e, module); } } - for (TransactionListener listener : listeners) { - listener.update(ut, TransactionListener.EventType.BEGIN); - } + return true; } catch (NotSupportedException e) { throw new GenericTransactionException("Not Supported error, could not begin transaction (probably a nesting problem)", e); @@ -262,9 +252,7 @@ public class TransactionUtil implements // clear out the stack too clearTransactionBeginStack(); clearSetRollbackOnlyCause(); - for (TransactionListener listener : listeners) { - listener.update(ut, TransactionListener.EventType.COMMIT); - } + Debug.logVerbose("Transaction committed", module); } else { Debug.logWarning("Not committing transaction, status is " + getStatusString(), module); @@ -340,9 +328,7 @@ public class TransactionUtil implements // clear out the stack too clearTransactionBeginStack(); clearSetRollbackOnlyCause(); - for (TransactionListener listener : listeners) { - listener.update(ut, TransactionListener.EventType.ROLLBACK); - } + ut.rollback(); Debug.logInfo("Transaction rolled back", module); } else { |
Free forum by Nabble | Edit this page |