|
It is now possible to run compact on a system collection.
Interestingly, it appears that the docs for the compact command already incorrectly state this is possible, dating back as far as at least 4.2 ("For system collections...."): https://www.mongodb.com/docs/v4.2/reference/command/compact/#compact-required-privileges
Description of Linked Ticket
System collections can't be compacted:
// Items in system.* cannot be moved as there might be pointers to them.
|
uassert(ErrorCodes::InvalidNamespace, "can't compact a system namespace", !nss.isSystem());
|
This restriction was added in SERVER-11595 and is likely an MMAP limitation. With WiredTiger being the default storage engine, this is no longer necessary as WiredTiger supports online compaction.
|