The connection pool for database '/data/data/com.app.test/databases/test-db' has been unable to grant a connection to thread 9734 (pool-3-thread-2) with flags 0x2 for 30.001001 seconds.
Connections: 1 active, 0 idle, 1 available.
Requests in progress:
executeForCursorWindow started 29982ms ago - running, sql="<<Complex SQL Query with an average of 3 LEFT JOINS>>"
在整个应用程序中,我们使用了ROOM和LiveData。正是在这个片段上,正在发生多个观察者(大约9个观察者)。对于观察到的每个LiveData,都有:
Transformations.switchMap()
Transformations.map()
@Embedded
批注,有些模型有多个@Relation
批注。我做了一些研究,但是没有人使用ROOM并遇到过这个问题。
答案 0 :(得分:1)
根据我的观察,我将出现此问题的设备留了将近一个小时,然后发现查询继续进行,SQLite警告未记录下来,并且SQL查询已经执行。
我调查了复杂的SQL查询,发现多个LEFT JOIN
(其中6个)引起了由GROUP BY
处理的重复记录。
为了证明这一点,我注释掉了复杂的SQL查询,并且无法再在ASUS Nexus 7(Android 5.1.1)设备上复制该错误。
最后,对于可能遇到相同问题的任何人,请尝试检查查询的执行时间并尝试对其进行优化。