6.20.0 (2021-04-16)
- 修复了在分布式/网络文件系统中,当服务器成功但客户端返回错误时处理文件重命名错误的错误。该错误会导致 CURRENT 文件指向不存在的 MANIFEST 文件,从而无法打开 DB。
6.19.0 (2021-03-21)
- 在 flush 过程中,只有 WAL sync 可重试 IO error 才会被映射到 hard error,从而导致 write stall。当使用 WAL 但只有 SST 文件写入有可重试 IO error时,它会被映射到 soft error,写入不会受到影响。
6.17.1 (2021-01-28)
- 当压缩过程中发生可重试 IO error 时,它会被映射到 soft error 并设置 BG error。但是,由于压缩将自行重新安排,因此不会调用自动恢复来清除 soft error。在此更改中,当压缩过程中发生可重试 IO error 时,不会设置 BG error。用户将通过 EventHelper 收到错误通知。
6.16.0 (2020-12-18)
- 由于 RocksDB 在文件写入因任何原因失败时不会继续写入同一文件,因此文件范围写入 IO error与可重试 IO error 处理相同。有关文件范围 IO error 的错误处理的更多信息包含在 ErrorHandler::SetBGError 中 。
6.12 (2020-07-28)
- 添加了自动恢复功能,可自动从后台可重试 IO Error 中恢复数据库。当在刷新和 WAL 写入期间发生可重试 IO Error 时,错误将映射到 Hard Error,数据库将处于读取模式。当在压缩期间发生可重试 IO Error 时,错误将映射到 Soft Error。数据库仍处于写入/读取模式。自动恢复功能将为数据库创建一个线程,以调用 DB->ResumeImpl() 尝试在刷新和 WAL 写入期间恢复可重试 IO Error。如果发生可重试 IO Error,压缩将自行重新安排。自动恢复还可能在恢复期间导致其他可重试 IO Error,因此恢复将失败。重试自动恢复可能会解决问题,因此我们使用 max_bgerror_resume_count 来决定总共将尝试多少次恢复周期。如果它 <=0,则自动恢复可重试 IO Error 被禁用。默认值为 INT_MAX,这将导致无限自动恢复。 bgerror_resume_retry_interval 决定两次自动恢复之间的时间间隔。
6.11.3 (2020-07-09)
- 在 MANIFEST 写入/同步失败后禁用文件删除,直到数据库重新打开或 Resume(),以便后续重新打开将不会看到 MANIFEST 引用已删除的 SST。
6.7.0 (2020-01-21)
- 在 include/rocksdb/file_system.h 中添加了一个 rocksdb::FileSystem 类来封装文件创建/读取/写入操作,并添加了一个选项 DBOptions::file_system 以允许用户传入 rocksdb::FileSystem 的实例。如果其为非空值,则对于文件操作,它将优先于 DBOptions::env。新 API rocksdb::FileSystem::Default() 返回平台默认对象。DBOptions::env 选项和 Env::Default() API 将继续用于线程和其他 OS 相关功能,以及在未指定 DBOptions::file_system 的情况下用于文件操作。对于习惯于 rocksdb::Env 的存储开发人员来说,rocksdb::FileSystem 中的接口是新的,并且可能会发生一些变化,因为更多的存储系统从 rocksdb::Env 移植到它。截至目前,除 Posix 之外,没有其他环境被移植到新接口。
- 新的 rocksdb::NewSstFileManager() API 允许调用者传入单独的 Env 和 FileSystem 对象。
6.6.0 (2019-11-25)
- 通用压缩支持 options.periodic_compaction_seconds。如果任何文件超过阈值,将触发完全压缩。
- 将 periodic_compaction_seconds 的默认值更改为UINT64_MAX - 1,允许 RocksDB 自动调整定期压缩调度。使用默认值时,如果使用压缩过滤器,则现在会自动启用定期压缩。值为0将完全关闭该功能。
- 更改了 ttl 的默认值,UINT64_MAX - 1允许 RocksDB 自动调整 ttl 值。使用默认值时,当支持该功能时,TTL 将自动启用为 30 天。要恢复旧行为,您可以明确将其设置为 0。