Skip to content

[Filestore] issue-5432: add basic async open support#6580

Closed
budevg wants to merge 2 commits into
mainfrom
users/evgenybud/async-open
Closed

[Filestore] issue-5432: add basic async open support#6580
budevg wants to merge 2 commits into
mainfrom
users/evgenybud/async-open

Conversation

@budevg

@budevg budevg commented Jul 22, 2026

Copy link
Copy Markdown
Collaborator

@budevg budevg added large-tests Launch large tests for PR filestore Add this label to run only cloud/filestore build and tests on PR asan Launch builds with address sanitizer along with regular build tsan Launch builds with thread sanitizer along with regular build msan Launch builds with memory sanitizer along with regular build ubsan Launch builds with undefined behaviour sanitizer along with regular build labels Jul 22, 2026
@github-actions

github-actions Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Note

This is an automated comment that will be appended during run.

Note

All workloads for linux-x86_64-release-msan have completed.

Tip

Planned checks for linux-x86_64-release-msan.

🔴 linux-x86_64-release-msan target: cloud/filestore/ (test time: 4947s): some tests FAILED for commit 7198199.

TESTS PASSED ERRORS FAILED FAILED BUILD SKIPPED MUTED?
3737 3736 0 1 0 0 0

@github-actions

github-actions Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Note

This is an automated comment that will be appended during run.

Note

All workloads for linux-x86_64-relwithdebinfo have completed.

Tip

Planned checks for linux-x86_64-relwithdebinfo.

🟢 linux-x86_64-relwithdebinfo target: cloud/filestore/ (test time: 7225s): all tests PASSED for commit 7198199.

TESTS PASSED ERRORS FAILED FAILED BUILD SKIPPED MUTED?
4424 4424 0 0 0 0 0

@github-actions

github-actions Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Note

This is an automated comment that will be appended during run.

Note

All workloads for linux-x86_64-release-asan have completed.

Tip

Planned checks for linux-x86_64-release-asan.

🟢 linux-x86_64-release-asan target: cloud/filestore/ (test time: 5056s): all tests PASSED for commit 7198199.

TESTS PASSED ERRORS FAILED FAILED BUILD SKIPPED MUTED?
3782 3782 0 0 0 0 0

@github-actions

github-actions Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Note

This is an automated comment that will be appended during run.

Note

All workloads for linux-x86_64-release-ubsan have completed.

Tip

Planned checks for linux-x86_64-release-ubsan.

🟢 linux-x86_64-release-ubsan target: cloud/filestore/ (test time: 4626s): all tests PASSED for commit 7198199.

TESTS PASSED ERRORS FAILED FAILED BUILD SKIPPED MUTED?
3832 3832 0 0 0 0 0

@github-actions

github-actions Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Note

This is an automated comment that will be appended during run.

Note

All workloads for linux-x86_64-release-tsan have completed.

Tip

Planned checks for linux-x86_64-release-tsan.

🟢 linux-x86_64-release-tsan target: cloud/filestore/ (test time: 5667s): all tests PASSED for commit 7198199.

TESTS PASSED ERRORS FAILED FAILED BUILD SKIPPED MUTED?
3772 3772 0 0 0 0 0

@budevg
budevg requested review from SvartMetal and qkrorlqr July 22, 2026 10:23

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7198199fae

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

xxx(ReadData, __VA_ARGS__) \
xxx(WriteData, __VA_ARGS__) \
xxx(AllocateData, __VA_ARGS__) \
xxx(ConfirmCreateHandle, __VA_ARGS__) \

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve existing request type ids

Adding ConfirmCreateHandle inside FILESTORE_DATA_METHODS renumbers every later EFileStoreRequest value, because FILESTORE_REQUESTS expands this macro before Fsync, FsyncDir, endpoint requests, and the private request names. Those numeric ids are persisted in profile log records and decoded by tools such as filestore-profile-tool dumpevents, so after this change existing records with the old Fsync/FsyncDir/etc. ids will be reported under the wrong request names. Please append the new request after the existing ids or assign stable explicit values instead of shifting the current sequence.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I considered preserving the existing numeric values. With the current macro layout, doing so would require introducing a separate macro, such as FILESTORE_EXTRA_DATA_METHODS, and appending it explicitly after all existing EFileStoreRequest entries.

This is somewhat awkward because every future service method added after the existing request list would need its own extra macro and explicit enum/name-array entry to avoid renumbering the persisted request types.

Since this change only renumbers the small trailing group of request types (Fsync, FsyncDir, GetSessionEventsStream, endpoint requests, and the private blob-related requests), I considered that a reasonable tradeoff for keeping the service-method declarations in one natural list.

Comment on lines +565 to +566
if (safeAsync) {
args.Response.SetHandleCreatedAsync(true);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Set async flag before caching duplicate opens

When safeAsync is true, this flag is set only after AddDupCacheEntry has already stored args.Response in the duplicate cache above. If the original async CreateHandle reply is lost and the client retries the same request id before the transaction/handle is durable, the retry is served from that cache without HandleCreatedAsync, so the client will not enqueue ConfirmCreateHandle and the returned handle can disappear after a tablet restart. Set the flag before adding the duplicate-cache entry, or update the cached response, so duplicate replies preserve the confirmation requirement.

Useful? React with 👍 / 👎.

f"exec sudo bash -c 'python3 {script} "
f"hold {OPEN_HANDLE_COUNT} {READY_PATH} {RELEASE_PATH} "
f"{VERIFY_PATH} {VERIFIED_PATH} {UNLINK_PATH} {UNLINKED_PATH} "
f">{LOG_PATH} 2>&1'"),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Redirect guest workload logs to a guest path

This command is executed by ssh inside the QEMU guest, but LOG_PATH is a host-side common.output_path(...); the QEMU recipe mounts the source/build paths into the guest, not the test output directory. When the guest shell tries to apply this redirection before starting python3, the parent directory is absent in the guest and the workload exits immediately, so the async-open test never reaches the open/confirm checks. Use a guest path such as /tmp/async_open.log and copy it back if needed.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The QEMU recipe mounts the entire ya build root into the guest at the same path mount setup. Since common.output_path() returns a path in the test output directory, which is under that build root, LOG_PATH is accessible from the guest. Keeping the log there also retains it as a test artifact after completion.

@github-actions

github-actions Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Note

This is an automated comment that will be appended during run.

Note

All workloads for linux-x86_64-relwithdebinfo have completed.

Tip

Planned checks for linux-x86_64-relwithdebinfo.

🔴 linux-x86_64-relwithdebinfo target: cloud/filestore/ (test time: 7170s): some tests FAILED for commit 96ec39c.

TESTS PASSED ERRORS FAILED FAILED BUILD SKIPPED MUTED?
4425 4424 0 1 0 0 0

🟢 linux-x86_64-relwithdebinfo target: cloud/filestore/ (test time: 240s): all tests PASSED for commit 96ec39c.

TESTS PASSED ERRORS FAILED FAILED BUILD SKIPPED MUTED?
2 2 0 0 0 0 0

@github-actions

github-actions Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Note

This is an automated comment that will be appended during run.

Note

All workloads for linux-x86_64-release-tsan have completed.

Tip

Planned checks for linux-x86_64-release-tsan.

🟢 linux-x86_64-release-tsan target: cloud/filestore/ (test time: 5561s): all tests PASSED for commit 96ec39c.

TESTS PASSED ERRORS FAILED FAILED BUILD SKIPPED MUTED?
3773 3773 0 0 0 0 0

@github-actions

github-actions Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Note

This is an automated comment that will be appended during run.

Note

All workloads for linux-x86_64-release-ubsan have completed.

Tip

Planned checks for linux-x86_64-release-ubsan.

🟢 linux-x86_64-release-ubsan target: cloud/filestore/ (test time: 4656s): all tests PASSED for commit 96ec39c.

TESTS PASSED ERRORS FAILED FAILED BUILD SKIPPED MUTED?
3833 3833 0 0 0 0 0

@github-actions

github-actions Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Note

This is an automated comment that will be appended during run.

Note

All workloads for linux-x86_64-release-msan have completed.

Tip

Planned checks for linux-x86_64-release-msan.

🟢 linux-x86_64-release-msan target: cloud/filestore/ (test time: 4981s): all tests PASSED for commit 96ec39c.

TESTS PASSED ERRORS FAILED FAILED BUILD SKIPPED MUTED?
3738 3738 0 0 0 0 0

@github-actions

github-actions Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Note

This is an automated comment that will be appended during run.

Note

All workloads for linux-x86_64-release-asan have completed.

Tip

Planned checks for linux-x86_64-release-asan.

🟢 linux-x86_64-release-asan target: cloud/filestore/ (test time: 5053s): all tests PASSED for commit 96ec39c.

TESTS PASSED ERRORS FAILED FAILED BUILD SKIPPED MUTED?
3783 3783 0 0 0 0 0

@SvartMetal

Copy link
Copy Markdown
Collaborator

Let's split this PR into several PRs: add ConfirmCreateHandle to the tablet, add ConfirmCreateHandle support to the vfs_fuse layer, and add support to HandleOpsQueue

@budevg

@budevg

budevg commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator Author

I've opened 3 prs to make it easier to review
#6588 - vfs__fuse changes
#6589 - tablet changes
#6590 - integration tests

closing this pr. let's keep review in these prs

@budevg budevg closed this Jul 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

asan Launch builds with address sanitizer along with regular build filestore Add this label to run only cloud/filestore build and tests on PR large-tests Launch large tests for PR msan Launch builds with memory sanitizer along with regular build tsan Launch builds with thread sanitizer along with regular build ubsan Launch builds with undefined behaviour sanitizer along with regular build

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants