Skip to content

Questions regarding how beginners can understand the detailed design related to garbage collection in the Titan source code. #327

@Yxlfe

Description

@Yxlfe

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions