Wei-Chiu Chuang created HDDS-15877:
--------------------------------------
Summary: Extend getFileStatus head-op (type-only) optimization to
o3fs and remaining type-only callers
Key: HDDS-15877
URL: https://issues.apache.org/jira/browse/HDDS-15877
Project: Apache Ozone
Issue Type: Improvement
Reporter: Wei-Chiu Chuang
Follow-up of HDDS-15678.
HDDS-15678 added a {{headOp}} (metadata/type-only) flag so ofs://
isDirectory/isFile skip the SCM pipeline refresh and block-location retrieval.
The following call sites still fetch a full FileStatus only to check
file-vs-directory and should adopt the same head-op path:
# *o3fs BasicOzoneFileSystem.isDirectory/isFile* (primary) — still delegate to
the deprecated super.isDirectory/isFile, which trigger a full getFileStatus +
pipeline refresh. Requires plumbing headOp through OzoneClientAdapter /
BasicOzoneClientAdapterImpl.getFileStatus (mirroring what HDDS-15678 did for
the rooted adapter). Without this, o3fs still pays the SCM round-trip while ofs
does not.
# *DeleteKeyHandler (cli-shell)* — bucket.getFileStatus(keyName).isDirectory()
(L103) and bucket.getFileStatus(toKeyName).isDirectory() (L125) use the status
only for the directory check; switch to getFileStatus(key, true) (API already
exists).
# *Trash-root checks* — BasicOzoneFileSystem#getTrashRoots (L787) and
BasicRootedOzoneClientAdapterImpl (L764) type-check via
getFileStatus(...).isDirectory(); the latter also double-fetches the status
(minor cleanup).
h3. Acceptance
* o3fs isDirectory/isFile skip pipeline refresh (verified like the ofs tests)
* type-only callers pass headOp=true
* no behavior change for FileNotFoundException
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]