Remove deleted pdu items from the updated cache

When pdu's are removed from the PduCache, make sure we remove
them from the list of pdu's currently being updated as well.

Change-Id: I45dde4a09d74019a344fca31e3926b1ece6c393d
This commit is contained in:
Tom Taylor
2012-02-27 16:05:07 -08:00
parent cbd01c31bf
commit 2dc6c7fa48
2 changed files with 16 additions and 0 deletions

View File

@@ -513,6 +513,9 @@ public class PduPersister {
PduCacheEntry cacheEntry;
synchronized(PDU_CACHE_INSTANCE) {
if (PDU_CACHE_INSTANCE.isUpdating(uri)) {
if (LOCAL_LOGV) {
Log.v(TAG, "load: " + uri + " blocked by isUpdating()");
}
try {
PDU_CACHE_INSTANCE.wait();
} catch (InterruptedException e) {
@@ -840,6 +843,9 @@ public class PduPersister {
// If the cache item is getting updated, wait until it's done updating before
// purging it.
if (PDU_CACHE_INSTANCE.isUpdating(uri)) {
if (LOCAL_LOGV) {
Log.v(TAG, "updateHeaders: " + uri + " blocked by isUpdating()");
}
try {
PDU_CACHE_INSTANCE.wait();
} catch (InterruptedException e) {
@@ -1002,6 +1008,9 @@ public class PduPersister {
PduCacheEntry cacheEntry;
synchronized(PDU_CACHE_INSTANCE) {
if (PDU_CACHE_INSTANCE.isUpdating(uri)) {
if (LOCAL_LOGV) {
Log.v(TAG, "updateParts: " + uri + " blocked by isUpdating()");
}
try {
PDU_CACHE_INSTANCE.wait();
} catch (InterruptedException e) {
@@ -1097,6 +1106,9 @@ public class PduPersister {
// If the cache item is getting updated, wait until it's done updating before
// purging it.
if (PDU_CACHE_INSTANCE.isUpdating(uri)) {
if (LOCAL_LOGV) {
Log.v(TAG, "persist: " + uri + " blocked by isUpdating()");
}
try {
PDU_CACHE_INSTANCE.wait();
} catch (InterruptedException e) {

View File

@@ -161,6 +161,7 @@ public final class PduCache extends AbstractCache<Uri, PduCacheEntry> {
}
private PduCacheEntry purgeSingleEntry(Uri key) {
mUpdating.remove(key);
PduCacheEntry entry = super.purge(key);
if (entry != null) {
removeFromThreads(key, entry);
@@ -176,6 +177,7 @@ public final class PduCache extends AbstractCache<Uri, PduCacheEntry> {
mMessageBoxes.clear();
mThreads.clear();
mUpdating.clear();
}
/**
@@ -216,6 +218,7 @@ public final class PduCache extends AbstractCache<Uri, PduCacheEntry> {
HashSet<Uri> msgBox = mMessageBoxes.remove(msgBoxId);
if (msgBox != null) {
for (Uri key : msgBox) {
mUpdating.remove(key);
PduCacheEntry entry = super.purge(key);
if (entry != null) {
removeFromThreads(key, entry);
@@ -240,6 +243,7 @@ public final class PduCache extends AbstractCache<Uri, PduCacheEntry> {
HashSet<Uri> thread = mThreads.remove(threadId);
if (thread != null) {
for (Uri key : thread) {
mUpdating.remove(key);
PduCacheEntry entry = super.purge(key);
if (entry != null) {
removeFromMessageBoxes(key, entry);