diff --git a/src/com/android/exchange/ExchangeService.java b/src/com/android/exchange/ExchangeService.java
index 0e459d7..ffdbb82 100644
--- a/src/com/android/exchange/ExchangeService.java
+++ b/src/com/android/exchange/ExchangeService.java
@@ -209,8 +209,9 @@
     private EasSyncStatusObserver mSyncStatusObserver;
     private Object mStatusChangeListener;
 
-    private HashMap<Long, CalendarObserver> mCalendarObservers =
-        new HashMap<Long, CalendarObserver>();
+    // Concurrent because CalendarSyncAdapter can modify the map during a wipe
+    private ConcurrentHashMap<Long, CalendarObserver> mCalendarObservers =
+        new ConcurrentHashMap<Long, CalendarObserver>();
 
     private ContentResolver mResolver;
 
@@ -745,11 +746,14 @@
     /**
      * Unregister all CalendarObserver's
      */
-    private void unregisterCalendarObservers() {
-        for (CalendarObserver observer: mCalendarObservers.values()) {
-            mResolver.unregisterContentObserver(observer);
+    static public void unregisterCalendarObservers() {
+        ExchangeService exchangeService = INSTANCE;
+        if (exchangeService == null) return;
+        ContentResolver resolver = exchangeService.mResolver;
+        for (CalendarObserver observer: exchangeService.mCalendarObservers.values()) {
+            resolver.unregisterContentObserver(observer);
         }
-        mCalendarObservers.clear();
+        exchangeService.mCalendarObservers.clear();
     }
 
     /**
diff --git a/src/com/android/exchange/adapter/CalendarSyncAdapter.java b/src/com/android/exchange/adapter/CalendarSyncAdapter.java
index ea857ec..682fcba 100644
--- a/src/com/android/exchange/adapter/CalendarSyncAdapter.java
+++ b/src/com/android/exchange/adapter/CalendarSyncAdapter.java
@@ -24,6 +24,7 @@
 import com.android.exchange.Eas;
 import com.android.exchange.EasOutboxService;
 import com.android.exchange.EasSyncService;
+import com.android.exchange.ExchangeService;
 import com.android.exchange.utility.CalendarUtilities;
 import com.android.exchange.utility.Duration;
 
@@ -198,6 +199,8 @@
                 "=" + DatabaseUtils.sqlEscapeString(mEmailAddress) + " AND " +
                 Calendars._SYNC_ACCOUNT_TYPE + "=" +
                 DatabaseUtils.sqlEscapeString(AccountManagerTypes.TYPE_EXCHANGE), null);
+        // Invalidate our calendar observers
+        ExchangeService.unregisterCalendarObservers();
     }
 
     @Override
