|
We want the class created and committed so that implementation can be done independently.
Given the CollectionShardingState and MetadataManager infrastructure we need to implement a RangeDeleter task, which will be what drains the rangesToClean structure.
The RangeDeleter task should have the following interface:
class CollectionRangeDeleter {
|
public:
|
CollectionRangeDeleter(NamespaceString nss);
|
|
/**
|
* Starts deleting ranges and cleans up this object when it is finished.
|
*/
|
void run();
|
|
/**
|
* Acquires the collection IX lock and checks whether there are new entries for the collection's
|
* rangesToClean structure and if they are, deletes some small amount of entries and yields
|
* using the standard query yielding logic.
|
*
|
* Returns true if there are more entries in the rangesToClean set or false otherwise.
|
*/
|
bool cleanupNextRange();
|
};
|
|