Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

issue-539: add tablet-side two-stage writes support for scaling throughput #707

Merged
merged 19 commits into from
Mar 28, 2024

Conversation

debnatkh
Copy link
Collaborator

@debnatkh debnatkh commented Mar 11, 2024

#539

Introduce 2 private methods for index tablet:

  1. IssueBlob – issue blob IDs for the data to be written to directly from the client. This method also acquires a collect barrier for the commit ID of the issued blob. This is done to prevent the barrier from moving beyond the commit ID of the issued blob. Also, the release of this barrier is scheduled after the IssueBlobReleaseCollectBarrierTimeout. This is done as a failsafe for clients that do not go through with the two-stage write path.
  2. MarkWriteComplete – after the data has been written to an issued blob, this method works in a similar manner as an ordinary WriteData method but with the difference that it does not write the data to the blob storage as it is supposed to be already written by the client.

In the next PR, we will implement the client side of the two-stage write path.

Created new TX: AddData. It is basically the same as WriteData except it does not use fresh bytes/blocks.
Both of these TXs use TWriteDataActor on their completion, so its code was extracted to tablet_actor_writedata_actor.(cpp|h)

Copy link
Contributor

Note

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

🟢 linux-x86_64-relwithdebinfo: all tests PASSED for commit 7f69129.

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
4777 4705 0 0 0 72

@debnatkh debnatkh changed the title [draft] issue-539: add two-stage writes for scaling throughput [draft] issue-539: add tablet-side two-stage writes support for scaling throughput Mar 12, 2024
Copy link
Contributor

Note

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

🟢 linux-x86_64-relwithdebinfo: all tests PASSED for commit 888b1f4.

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
4780 4708 0 0 0 72

@debnatkh debnatkh added the filestore Add this label to run only cloud/filestore build and tests on PR label Mar 13, 2024
@debnatkh debnatkh marked this pull request as ready for review March 13, 2024 17:44
Copy link
Contributor

Note

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

🟢 linux-x86_64-relwithdebinfo: all tests PASSED for commit 7bb3df1.

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
1263 1193 0 0 0 70

Copy link
Contributor

Note

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

🟢 linux-x86_64-relwithdebinfo: all tests PASSED for commit 64dfc5b.

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
1263 1193 0 0 0 70

@debnatkh debnatkh changed the title [draft] issue-539: add tablet-side two-stage writes support for scaling throughput issue-539: add tablet-side two-stage writes support for scaling throughput Mar 14, 2024
Copy link
Contributor

Note

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

🟢 linux-x86_64-relwithdebinfo: all tests PASSED for commit aac1ca9.

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
1263 1193 0 0 0 70

Copy link
Contributor

Note

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

🟢 linux-x86_64-relwithdebinfo: all tests PASSED for commit ec0e01b.

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
1263 1193 0 0 0 70

Copy link
Contributor

Note

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

🟢 linux-x86_64-relwithdebinfo: all tests PASSED for commit 7a980f3.

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
1263 1193 0 0 0 70

Copy link
Collaborator

@qkrorlqr qkrorlqr left a comment

Choose a reason for hiding this comment

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

Надо вынести подготовительные правки в отдельный PR, иначе будем очень долго это ревьюить. Подготовительные правки - это, например, вынос TWriteDataActor в tablet/actors/, это вынос кода валидации запроса из HandleWriteData в отдельную функцию и другие подобные правки

cloud/filestore/config/storage.proto Outdated Show resolved Hide resolved
cloud/filestore/config/storage.proto Outdated Show resolved Hide resolved
cloud/filestore/libs/storage/api/tablet.h Outdated Show resolved Hide resolved
cloud/filestore/libs/storage/core/config.cpp Outdated Show resolved Hide resolved
cloud/filestore/libs/storage/tablet/model/blob_builder.cpp Outdated Show resolved Hide resolved
cloud/filestore/libs/storage/tablet/tablet_ut_data.cpp Outdated Show resolved Hide resolved
cloud/filestore/private/api/protos/tablet.proto Outdated Show resolved Hide resolved
Copy link
Contributor

Note

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

🟢 linux-x86_64-relwithdebinfo: all tests PASSED for commit 7b10512.

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
1263 1193 0 0 0 70

Copy link
Contributor

Note

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

🟢 linux-x86_64-relwithdebinfo: all tests PASSED for commit dbd1021.

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
1504 1504 0 0 0 0

Copy link
Contributor

Note

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

🔴 linux-x86_64-relwithdebinfo: some tests FAILED for commit fbff7d7.

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
1488 1486 0 2 0 0

cloud/filestore/config/storage.proto Outdated Show resolved Hide resolved
cloud/filestore/libs/storage/tablet/tablet_tx.h Outdated Show resolved Hide resolved
cloud/filestore/libs/storage/tablet/tablet_tx.h Outdated Show resolved Hide resolved
cloud/filestore/libs/storage/tablet/tablet_tx.h Outdated Show resolved Hide resolved
cloud/filestore/private/api/protos/tablet.proto Outdated Show resolved Hide resolved
cloud/filestore/private/api/protos/tablet.proto Outdated Show resolved Hide resolved
Copy link
Contributor

Note

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

🟢 linux-x86_64-relwithdebinfo: all tests PASSED for commit 146bfe5.

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
1504 1504 0 0 0 0

Copy link
Contributor

Note

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

🟢 linux-x86_64-relwithdebinfo: all tests PASSED for commit af675a9.

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
1504 1504 0 0 0 0

@debnatkh debnatkh merged commit 6b13de0 into main Mar 28, 2024
7 checks passed
@debnatkh debnatkh deleted the users/debnatkh/issue-539 branch March 28, 2024 14:17
debnatkh added a commit that referenced this pull request Apr 2, 2024
…ghput (#707)

issue-539: add two-stage writes for scaling throughput
debnatkh added a commit that referenced this pull request Apr 3, 2024
* issue-539: extract writedata actor into separate location + add TABLET_VERIFY for ReleaseCollectBarrier (#790)

issue-539: extract writedata actor into separate location + add TABLET_VERIFY for ReleaseCollectBarrier

* fix arcadia build: trailing EOL (#808)

* issue-539: add tablet-side two-stage writes support for scaling throughput (#707)

issue-539: add two-stage writes for scaling throughput

* issue-539: add service-side two-stage writes support for scaling throughput (#807)

issue-539: add service-side two-stage writes support

* fix cmake build
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
filestore Add this label to run only cloud/filestore build and tests on PR
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants