Details
-
Bug
-
Status: Resolved
-
Critical
-
Resolution: Fixed
-
None
-
None
Description
Background
KeyManagerImpl#createFakeDirIfShould is intended to return a "fake" OmKeyInfo entry for a directory to the client in the case of OBS or LEGACY bucket. It is called from getOzoneFileStatus from KeyManagerImpl#getFileStatus. This was added in HDDS-7253.
Discovery
However, due to RockDB prefix seek using a bloom filter, leading to keyValue returning non-null even if such volume+bucket+key prefix doesn't exist at all at times, it appears that the current prefix check logic in createFakeDirIfShould is not sufficient in verification.
This is discovered by hemantk while debugging HDDS-7861, a snapshot test, while the issue itself does not appear to be related to snapshot code additions.
Potential Solution
Check volume and bucket names as well inside if (keyValue != null). We may or may not need to iterate over the iterator based on the expectations of KeyManagerImpl#createFakeDirIfShould.
cc hemantk
cc XiChen] ckj duongnguyen that authored/reviewed patch HDDS-7253
cc erose the OBS/FSO bucket expert
Attachments
Issue Links
- causes
-
HDDS-7861 [Snapshot] Flaky snapshot restore integration test.
- Resolved
- duplicates
-
HDDS-7870 getFileStatus return wrong response when key doesn't exist
- Resolved
- is caused by
-
HDDS-7253 Ozone fs report error when key names containing '/'
- Resolved
- relates to
-
HDDS-7991 Intermittent failure in FS contract tests
- Resolved
- links to