If no_io is set to true, TableCache would not load the table and add it to the cache, when the table does not exist in the cache already, instead, the caller (in this case, Version which is then called by compaction) is responsible to load the table properties without affecting the cache. Since compaction is an one-off operation (from SST's perspective), it makes more sense to set no_io to true here.
I confirmed with the author that the change
no_io = false
made in https://github.com/tikv/rocksdb/pull/211 was not intended as the PR description suggested.If
no_io
is set to true,TableCache
would not load the table and add it to the cache, when the table does not exist in the cache already, instead, the caller (in this case,Version
which is then called by compaction) is responsible to load the table properties without affecting the cache. Since compaction is an one-off operation (from SST's perspective), it makes more sense to setno_io
to true here.