Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DB reads from main thread warning #154

Open
roundhill opened this issue Aug 15, 2014 · 2 comments
Open

DB reads from main thread warning #154

roundhill opened this issue Aug 15, 2014 · 2 comments
Labels

Comments

@roundhill
Copy link
Contributor

If you enable strict mode you may see this at startup:

08-15 15:34:45.362  21655-21655/org.wordpress.android D/StrictMode﹕ StrictMode policy violation; ~duration=801 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=2071 violation=2
            at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1135)
            at android.database.sqlite.SQLiteConnection.applyBlockGuardPolicy(SQLiteConnection.java:1041)
            at android.database.sqlite.SQLiteConnection.executeForString(SQLiteConnection.java:638)
            at android.database.sqlite.SQLiteConnection.setJournalMode(SQLiteConnection.java:323)
            at android.database.sqlite.SQLiteConnection.setWalModeFromConfiguration(SQLiteConnection.java:294)
            at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:215)
            at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
            at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
            at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
            at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
            at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804)
            at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789)
            at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
            at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:952)
            at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:941)
            at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:250)
            at com.simperium.android.AndroidClient.<init>(AndroidClient.java:54)
            at com.simperium.Simperium.newClient(Simperium.java:29)
            at org.wordpress.android.ui.notifications.SimperiumUtils.configureSimperium(SimperiumUtils.java:45)
            at org.wordpress.android.WordPress.configureSimperium(WordPress.java:202)
            at org.wordpress.android.WordPress.onCreate(WordPress.java:165)
            at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4328)
            at android.app.ActivityThread.access$1500(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)
08-15 15:34:45.362  21655-21655/org.wordpress.android D/StrictMode﹕ StrictMode policy violation; ~duration=800 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=2071 violation=2
            at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1135)
            at android.database.sqlite.SQLiteConnection.applyBlockGuardPolicy(SQLiteConnection.java:1041)
            at android.database.sqlite.SQLiteConnection.executeForString(SQLiteConnection.java:638)
            at android.database.sqlite.SQLiteConnection.setSyncMode(SQLiteConnection.java:301)
            at android.database.sqlite.SQLiteConnection.setWalModeFromConfiguration(SQLiteConnection.java:295)
            at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:215)
            at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
            at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
            at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
            at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
            at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804)
            at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789)
            at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
            at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:952)
            at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:941)
            at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:250)
            at com.simperium.android.AndroidClient.<init>(AndroidClient.java:54)
            at com.simperium.Simperium.newClient(Simperium.java:29)
            at org.wordpress.android.ui.notifications.SimperiumUtils.configureSimperium(SimperiumUtils.java:45)
            at org.wordpress.android.WordPress.configureSimperium(WordPress.java:202)
            at org.wordpress.android.WordPress.onCreate(WordPress.java:165)
            at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4328)
            at android.app.ActivityThread.access$1500(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)
08-15 15:34:45.362  21655-21655/org.wordpress.android D/StrictMode﹕ StrictMode policy violation; ~duration=798 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=2071 violation=2
            at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1135)
            at android.database.sqlite.SQLiteConnection.applyBlockGuardPolicy(SQLiteConnection.java:1041)
            at android.database.sqlite.SQLiteConnection.executeForLong(SQLiteConnection.java:595)
            at android.database.sqlite.SQLiteConnection.setJournalSizeLimit(SQLiteConnection.java:271)
            at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:216)
            at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
            at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
            at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
            at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
            at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804)
            at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789)
            at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
            at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:952)
            at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:941)
            at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:250)
            at com.simperium.android.AndroidClient.<init>(AndroidClient.java:54)
            at com.simperium.Simperium.newClient(Simperium.java:29)
            at org.wordpress.android.ui.notifications.SimperiumUtils.configureSimperium(SimperiumUtils.java:45)
            at org.wordpress.android.WordPress.configureSimperium(WordPress.java:202)
            at org.wordpress.android.WordPress.onCreate(WordPress.java:165)
            at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4328)
            at android.app.ActivityThread.access$1500(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)
08-15 15:34:45.362  21655-21655/org.wordpress.android D/StrictMode﹕ StrictMode policy violation; ~duration=797 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=2071 violation=2
            at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1135)
            at android.database.sqlite.SQLiteConnection.applyBlockGuardPolicy(SQLiteConnection.java:1041)
            at android.database.sqlite.SQLiteConnection.executeForLong(SQLiteConnection.java:595)
            at android.database.sqlite.SQLiteConnection.setJournalSizeLimit(SQLiteConnection.java:273)
            at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:216)
            at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
            at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
            at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
            at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
            at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804)
            at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789)
            at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
            at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:952)
            at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:941)
            at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:250)
            at com.simperium.android.AndroidClient.<init>(AndroidClient.java:54)
            at com.simperium.Simperium.newClient(Simperium.java:29)
            at org.wordpress.android.ui.notifications.SimperiumUtils.configureSimperium(SimperiumUtils.java:45)
            at org.wordpress.android.WordPress.configureSimperium(WordPress.java:202)
            at org.wordpress.android.WordPress.onCreate(WordPress.java:165)
            at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4328)
            at android.app.ActivityThread.access$1500(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)
08-15 15:34:45.362  21655-21655/org.wordpress.android D/StrictMode﹕ StrictMode policy violation; ~duration=796 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=2071 violation=2
            at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1135)
            at android.database.sqlite.SQLiteConnection.applyBlockGuardPolicy(SQLiteConnection.java:1041)
            at android.database.sqlite.SQLiteConnection.executeForLong(SQLiteConnection.java:595)
            at android.database.sqlite.SQLiteConnection.setAutoCheckpointInterval(SQLiteConnection.java:261)
            at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:217)
            at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
            at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
            at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
            at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
            at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804)
            at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789)
            at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
            at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:952)
            at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:941)
            at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:250)
            at com.simperium.android.AndroidClient.<init>(AndroidClient.java:54)
            at com.simperium.Simperium.newClient(Simperium.java:29)
            at org.wordpress.android.ui.notifications.SimperiumUtils.configureSimperium(SimperiumUtils.java:45)
            at org.wordpress.android.WordPress.configureSimperium(WordPress.java:202)
            at org.wordpress.android.WordPress.onCreate(WordPress.java:165)
            at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4328)
            at android.app.ActivityThread.access$1500(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)
08-15 15:34:45.362  21655-21655/org.wordpress.android D/StrictMode﹕ StrictMode policy violation; ~duration=794 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=2071 violation=2
            at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1135)
            at android.database.sqlite.SQLiteConnection.applyBlockGuardPolicy(SQLiteConnection.java:1041)
            at android.database.sqlite.SQLiteConnection.executeForLong(SQLiteConnection.java:595)
            at android.database.sqlite.SQLiteConnection.setAutoCheckpointInterval(SQLiteConnection.java:263)
            at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:217)
            at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
            at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
            at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
            at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
            at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804)
            at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789)
            at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
            at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:952)
            at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:941)
            at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:250)
            at com.simperium.android.AndroidClient.<init>(AndroidClient.java:54)
            at com.simperium.Simperium.newClient(Simperium.java:29)
            at org.wordpress.android.ui.notifications.SimperiumUtils.configureSimperium(SimperiumUtils.java:45)
            at org.wordpress.android.WordPress.configureSimperium(WordPress.java:202)
            at org.wordpress.android.WordPress.onCreate(WordPress.java:165)
            at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4328)
            at android.app.ActivityThread.access$1500(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)
08-15 15:34:45.362  21655-21655/org.wordpress.android D/StrictMode﹕ StrictMode policy violation; ~duration=789 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=2071 violation=2
            at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1135)
            at android.database.sqlite.SQLiteConnection.applyBlockGuardPolicy(SQLiteConnection.java:1041)
            at android.database.sqlite.SQLiteConnection.execute(SQLiteConnection.java:552)
            at android.database.sqlite.SQLiteConnection.setLocaleFromConfiguration(SQLiteConnection.java:371)
            at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:218)
            at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
            at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
            at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
            at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
            at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804)
            at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789)
            at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
            at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:952)
            at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:941)
            at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:250)
            at com.simperium.android.AndroidClient.<init>(AndroidClient.java:54)
            at com.simperium.Simperium.newClient(Simperium.java:29)
            at org.wordpress.android.ui.notifications.SimperiumUtils.configureSimperium(SimperiumUtils.java:45)
            at org.wordpress.android.WordPress.configureSimperium(WordPress.java:202)
            at org.wordpress.android.WordPress.onCreate(WordPress.java:165)
            at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4328)
            at android.app.ActivityThread.access$1500(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)
@roundhill roundhill added the Bug label Aug 15, 2014
@beaucollins
Copy link
Contributor

The offending line: AndroidClient.java#54

@beaucollins
Copy link
Contributor

Looks like there's multiple places during configuration that we need put in the background.

I think the best solution will require applications to register some kind of listener that configuration is done so that we can perform all configuration on a background thread.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants