Hello, as a beginner in Titan, I haven't found any detailed design documents related to Titan. While researching the relevant design in the source code, I found it difficult to understand some of the explanations in the comments. For example, in the enum class FileState : int:
enum class FileState : int {
kInit, // file never at this state
kNormal,
kPendingLSM, // waiting keys adding to LSM
kBeingGC, // being gced
kPendingGC, // output of gc, waiting gc finish and keys adding to LSM
kObsolete, // already gced, but wait to be physical deleted
kToMerge, // need merge to new blob file in next compaction
};
I am having trouble understanding the difference between the kPendingLSM and kPendingGC states in terms of their specific scenarios. Please answer my question regarding kPendingLSM and kPendingGC, and if possible, provide a link to the relevant detailed design documents. I would greatly appreciate it.
Hello, as a beginner in Titan, I haven't found any detailed design documents related to Titan. While researching the relevant design in the source code, I found it difficult to understand some of the explanations in the comments. For example, in the enum class FileState : int:
enum class FileState : int {
kInit, // file never at this state
kNormal,
kPendingLSM, // waiting keys adding to LSM
kBeingGC, // being gced
kPendingGC, // output of gc, waiting gc finish and keys adding to LSM
kObsolete, // already gced, but wait to be physical deleted
kToMerge, // need merge to new blob file in next compaction
};
I am having trouble understanding the difference between the kPendingLSM and kPendingGC states in terms of their specific scenarios. Please answer my question regarding kPendingLSM and kPendingGC, and if possible, provide a link to the relevant detailed design documents. I would greatly appreciate it.