)]}'
{
  "commit": "f4a3b7e523e36679b68edd2af632e26648758ff2",
  "tree": "0c9f1b6cffa2739ddc7ba71ecd164c64ea2539ec",
  "parents": [
    "1b6c85b96f5cccae94d8bad6ea727accacfb7a0f"
  ],
  "author": {
    "name": "Dmitri Plotnikov",
    "email": "dplotnikov@google.com",
    "time": "Thu Jan 14 17:22:00 2010 -0800"
  },
  "committer": {
    "name": "Dmitri Plotnikov",
    "email": "dplotnikov@google.com",
    "time": "Thu Jan 14 17:22:00 2010 -0800"
  },
  "message": "Solving deadlock in ContactProvider2\n\nThese two threads are deadlocked.\n\nThere are two locks involved: database lock (marked with D below and\nthe object lock on ContactsDatabaseHelper marked with H)\n\n\"Binder Thread #2\" prio\u003d5 tid\u003d13 MONITOR\n  | group\u003d\"main\" sCount\u003d1 dsCount\u003d0 s\u003dN obj\u003d0x44bee478 self\u003d0x1205f8\n  | sysTid\u003d1439 nice\u003d0 sched\u003d0/0 cgrp\u003ddefault handle\u003d1201736\nH at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:~149)\n  at com.android.providers.contacts.ContactsDatabaseHelper.getMimeTypeId(ContactsDatabaseHelper.java:1512)\n  at com.android.providers.contacts.ContactsDatabaseHelper.updateAllVisible(ContactsDatabaseHelper.java:1554)\n  at com.android.providers.contacts.ContactsProvider2.beforeTransactionCommit(ContactsProvider2.java:1989)\n  at com.android.providers.contacts.SQLiteContentProvider.onCommit(SQLiteContentProvider.java:216)\n  at android.database.sqlite.SQLiteDatabase.endTransaction(SQLiteDatabase.java:494)\nD at com.android.providers.contacts.SQLiteContentProvider.insert(SQLiteContentProvider.java:96)\n  at com.android.providers.contacts.ContactsProvider2.insert(ContactsProvider2.java:1941)\n  at android.content.ContentProvider$Transport.insert(ContentProvider.java:150)\n  at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:140)\n  at android.os.Binder.execTransact(Binder.java:287)\n  at dalvik.system.NativeStart.run(Native Method)\n\n\"Binder Thread #1\" prio\u003d5 tid\u003d11 WAIT\n  | group\u003d\"main\" sCount\u003d1 dsCount\u003d0 s\u003dN obj\u003d0x44bea248 self\u003d0x125480\n  | sysTid\u003d1438 nice\u003d0 sched\u003d0/0 cgrp\u003ddefault handle\u003d1145184\n  at java.lang.Object.wait(Native Method)\n  - waiting on \u003c0x5319d0\u003e (a java.lang.VMThread)\n  at java.lang.Thread.parkFor(Thread.java:1535)\n  at java.lang.LangAccessImpl.parkFor(LangAccessImpl.java:48)\n  at sun.misc.Unsafe.park(Unsafe.java:317)\n  at java.util.concurrent.locks.LockSupport.park(LockSupport.java:131)\n  at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:790)\n  at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:823)\n  at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1153)\n  at java.util.concurrent.locks.ReentrantLock$FairSync.lock(ReentrantLock.java:200)\n  at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:261)\nD at android.database.sqlite.SQLiteDatabase.lock(SQLiteDatabase.java:305)\n  at android.database.sqlite.SQLiteStatement.simpleQueryForLong(SQLiteStatement.java:116)\nH at com.android.providers.contacts.ContactsDatabaseHelper.getCachedId(ContactsDatabaseHelper.java:1478)\n  at com.android.providers.contacts.ContactsDatabaseHelper.getMimeTypeId(ContactsDatabaseHelper.java:1513)\n  at com.android.providers.contacts.ContactsProvider2.query(ContactsProvider2.java:3765)\n  at android.content.ContentProvider$Transport.bulkQuery(ContentProvider.java:117)\n  at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:98)\n  at android.os.Binder.execTransact(Binder.java:287)\n  at dalvik.system.NativeStart.run(Native Method)\n\nRemoving synchronization from the getCachedId method is benign. Worst case\nsome value would be read from the database twice - no biggie.\n\nBug: 2370192\nChange-Id: Ia6606d5bf617a8d52daaa1e63f57aeeba6dd0437\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f248116de589455925d8669995ad17851cdd49ab",
      "old_mode": 33188,
      "old_path": "src/com/android/providers/contacts/ContactsDatabaseHelper.java",
      "new_id": "154f62f4cd11ccaaf9bfe8d3d796788f6edface8",
      "new_mode": 33188,
      "new_path": "src/com/android/providers/contacts/ContactsDatabaseHelper.java"
    }
  ]
}
