-
Type:
Improvement
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Workload Resilience
-
WR Prioritized list
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Create a "disk canary" feature that can be used as a background thread in MongoDB server applications, or as a standalone application that only functions as a disk canary.
Requirements:
- Implemented as a standalone class or free functions & configuration structures with minimal dependencies. There should be very little existing MongoDB libraries required to implement this, C++ standard libraries such as filesystem should be sufficient.
- Must not use WiredTiger libraries - this should be an independent test of the storage device with operating system primitives, or the thin wrapper that std::filesystem provides.
- Must have configurable test conditions. Eg: checking for a size=0 write, with/without O_DIRECT, testing the creation, deletion, truncation, etc. of a file.
- Must have configurable location on the local filesystem, but default to a particular storage device or partition.
- Must return an error code upon failure, so higher level wrappers can chose to ignore certain failures.
- Implement a background thread wrapper for easy integration in MongoDB applications eg: mongos or mongod.
- Implement a standalone executable wrapper that exits with a non-zero status when a check fails.
Possible Extensions:
- Configurable retry/level trigger logic. Eg: only fail the check if N failures within S seconds