Closed zzzworm closed 8 years ago
你好,感谢你分享的YYCache项目,我们在项目中有使用,在使用过程中我们发现一个问题: _dbOpen函数在某些情况下由于打开sqlite数据库失败,但是内部状态维护有点问题,具体是场景是:图片缓存被多次清理,在某次清理时打开sqlite数据库返回SQLITE_CANTOPEN,_dbOpen函数返回了NO,但是内部状态,db,_invalidated等状态都标示为打开成功状态,在下次使用图片缓存时由于_dbStmtCache被置为NULL,导致crash。 这里存在的问题还和sqlite的API有关系,int result = sqlite3_open(_dbPath.UTF8String, &_db);在返回失败是,db被赋值了
感谢提供信息。 能问一下使用的 YYCache 版本是多少吗?
我使用YYCache版本是1.0
好的,我会在多处理一下异常情况,增加容错处理和调试 log。
Fixed,增加了一些重试和的错误检查的逻辑。
你好,感谢你分享的YYCache项目,我们在项目中有使用,在使用过程中我们发现一个问题: _dbOpen函数在某些情况下由于打开sqlite数据库失败,但是内部状态维护有点问题,具体是场景是:图片缓存被多次清理,在某次清理时打开sqlite数据库返回SQLITE_CANTOPEN,_dbOpen函数返回了NO,但是内部状态,db,_invalidated等状态都标示为打开成功状态,在下次使用图片缓存时由于_dbStmtCache被置为NULL,导致crash。 这里存在的问题还和sqlite的API有关系,int result = sqlite3_open(_dbPath.UTF8String, &_db);在返回失败是,db被赋值了