@Override final void performExpiryTimeout(ExpiryTask p_task) throws CacheException { ExpiryTask task = p_task; boolean isEvictDestroy = isEntryEvictDestroyEnabled(); //Fix for bug 43805 - get the primary lock before //synchronizing on pendingSecondaryExpires, to match the lock //ordering in other place (like acquiredPrimaryLock) lockPrimaryStateReadLock(false); try { // Why do we care if evict destroy is configured? // See bug 41096 for the answer. if(!getBucketAdvisor().isPrimary() && !isEvictDestroy) { synchronized (this.pendingSecondaryExpires) { if (task.isPending()) { Object key = task.getKey(); if (key != null) { this.pendingSecondaryExpires.put(key, task); } } } } else { super.performExpiryTimeout(task); } } finally { doUnlockForPrimary(); } }
@Override final void performExpiryTimeout(ExpiryTask p_task) throws CacheException { ExpiryTask task = p_task; boolean isEvictDestroy = isEntryEvictDestroyEnabled(); //Fix for bug 43805 - get the primary lock before //synchronizing on pendingSecondaryExpires, to match the lock //ordering in other place (like acquiredPrimaryLock) lockPrimaryStateReadLock(false); try { // Why do we care if evict destroy is configured? // See bug 41096 for the answer. if(!getBucketAdvisor().isPrimary() && !isEvictDestroy) { synchronized (this.pendingSecondaryExpires) { if (task.isPending()) { Object key = task.getKey(); if (key != null) { this.pendingSecondaryExpires.put(key, task); } } } } else { super.performExpiryTimeout(task); } } finally { doUnlockForPrimary(); } }