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:
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user