diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
index c11a220a4f0e97ce4ff2a569af898f7f3fefdff5..22b91700c3223f7379e4c44a83601d1b396d2bb3 100644
--- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
@@ -647,7 +647,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
     @UsedForTesting
     public void waitAllTasksForTests() {
         final CountDownLatch countDownLatch = new CountDownLatch(1);
-        ExecutorUtils.getExecutor(mDictName).execute(new Runnable() {
+        asyncExecuteTaskWithWriteLock(new Runnable() {
             @Override
             public void run() {
                 countDownLatch.countDown();
diff --git a/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java b/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java
index f87f3b494e69fef7a68bb69f4302873ceddf45d1..8755e573cf6ce9b7319b247ae4ad689a69dbca8c 100644
--- a/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java
+++ b/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java
@@ -41,6 +41,7 @@ import java.util.concurrent.TimeUnit;
 @LargeTest
 public class UserHistoryDictionaryTests extends AndroidTestCase {
     private static final String TAG = UserHistoryDictionaryTests.class.getSimpleName();
+    private static final int WAIT_FOR_WRITING_FILE_IN_MILLISECONDS = 3000;
 
     private static final String[] CHARACTERS = {
         "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
@@ -248,6 +249,15 @@ public class UserHistoryDictionaryTests extends AndroidTestCase {
         } finally {
             Log.d(TAG, "waiting for writing ...");
             waitForWriting(dummyLocale);
+            if (!dictFile.exists()) {
+                try {
+                    Log.d(TAG, dictFile +" is not existing. Wait "
+                            + WAIT_FOR_WRITING_FILE_IN_MILLISECONDS + " ms for writing.");
+                    Thread.sleep(WAIT_FOR_WRITING_FILE_IN_MILLISECONDS);
+                } catch (final InterruptedException e) {
+                    Log.e(TAG, "Interrupted during waiting for writing the dict file.");
+                }
+            }
             assertTrue("check exisiting of " + dictFile, dictFile.exists());
             FileUtils.deleteRecursively(dictFile);
         }