Skip to content

Conversation

@serbel324
Copy link
Collaborator

@serbel324 serbel324 commented Jun 6, 2025

Changelog entry

Introduce new UnorderedData protocol of full synchronization which allows to take hull index snapshot only once per full sync session. New protocol will be used to send DoNotKeep flags from Phantom Flag Storage, which will be sent without relying on linear order. For now the new protocol is disabled by default.

Changelog category

  • Experimental feature

@github-actions
Copy link

github-actions bot commented Jun 6, 2025

2025-06-06 13:20:07 UTC Pre-commit check linux-x86_64-release-asan for 19a2d4c has started.
2025-06-06 13:20:31 UTC Artifacts will be uploaded here
2025-06-06 13:24:08 UTC ya make is running...
2025-06-06 14:26:44 UTC Check cancelled

@github-actions
Copy link

github-actions bot commented Jun 6, 2025

2025-06-06 13:21:04 UTC Pre-commit check linux-x86_64-relwithdebinfo for 19a2d4c has started.
2025-06-06 13:21:14 UTC Artifacts will be uploaded here
2025-06-06 13:24:54 UTC ya make is running...
2025-06-06 14:26:37 UTC Check cancelled

@github-actions
Copy link

github-actions bot commented Jun 6, 2025

🟢 2025-06-09 07:58:28 UTC The validation of the Pull Request description is successful.

@github-actions
Copy link

github-actions bot commented Jun 6, 2025

2025-06-06 14:33:07 UTC Pre-commit check linux-x86_64-relwithdebinfo for 72e7083 has started.
2025-06-06 14:33:16 UTC Artifacts will be uploaded here
2025-06-06 14:36:46 UTC ya make is running...
🟡 2025-06-06 15:42:48 UTC Some tests failed, follow the links below. Going to retry failed tests...

Test history | Ya make output | Test bloat

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
31493 28800 0 2 2659 32

2025-06-06 15:45:21 UTC ya make is running... (failed tests rerun, try 2)
🟢 2025-06-06 15:55:31 UTC Tests successful.

Test history | Ya make output | Test bloat | Test bloat

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
435 (only retried tests) 415 0 0 0 20

🟢 2025-06-06 15:55:41 UTC Build successful.
🟢 2025-06-06 15:56:00 UTC ydbd size 2.2 GiB changed* by +83.0 KiB, which is < 100.0 KiB vs main: OK

ydbd size dash main: 52a3851 merge: 72e7083 diff diff %
ydbd size 2 370 130 784 Bytes 2 370 215 768 Bytes +83.0 KiB +0.004%
ydbd stripped size 497 226 600 Bytes 497 244 648 Bytes +17.6 KiB +0.004%

*please be aware that the difference is based on comparing your commit and the last completed build from the post-commit, check comparation

@github-actions
Copy link

github-actions bot commented Jun 6, 2025

2025-06-06 14:34:47 UTC Pre-commit check linux-x86_64-release-asan for 72e7083 has started.
2025-06-06 14:34:58 UTC Artifacts will be uploaded here
2025-06-06 14:38:28 UTC ya make is running...
🟡 2025-06-06 16:20:08 UTC Some tests failed, follow the links below. This fail is not in blocking policy yet Going to retry failed tests...

Test history | Ya make output | Test bloat

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
16203 16033 0 79 65 26

2025-06-06 16:21:30 UTC ya make is running... (failed tests rerun, try 2)
🟡 2025-06-06 16:55:54 UTC Some tests failed, follow the links below. This fail is not in blocking policy yet Going to retry failed tests...

Test history | Ya make output | Test bloat | Test bloat

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
1447 (only retried tests) 1283 0 93 49 22

2025-06-06 16:56:11 UTC ya make is running... (failed tests rerun, try 3)
🟡 2025-06-06 17:29:04 UTC Some tests failed, follow the links below. This fail is not in blocking policy yet

Test history | Ya make output | Test bloat | Test bloat | Test bloat

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
1438 (only retried tests) 1292 0 55 72 19

🟢 2025-06-06 17:29:20 UTC Build successful.
🟡 2025-06-06 17:29:54 UTC ydbd size 3.9 GiB changed* by +148.8 KiB, which is >= 100.0 KiB vs main: Warning

ydbd size dash main: 52a3851 merge: 72e7083 diff diff %
ydbd size 4 168 557 864 Bytes 4 168 710 192 Bytes +148.8 KiB +0.004%
ydbd stripped size 1 446 006 584 Bytes 1 446 064 728 Bytes +56.8 KiB +0.004%

*please be aware that the difference is based on comparing your commit and the last completed build from the post-commit, check comparation

TIntrusivePtr<TBarriersSnapshot::TBarriersEssence> BarriersEssence;
};

class TFrequentlyCalledHPTimer {
Copy link
Collaborator

Choose a reason for hiding this comment

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

How about moving it to common code?

// now, when we obtained DbBirthLsn, we can create full sync handler actor
// run handler in the same mailbox
if (DbBirthLsn) {
Db->SyncFullHandlerID.Set(ctx.RegisterWithSameMailbox(CreateHullSyncFullHandler(Db, HullCtx,
Copy link
Collaborator

Choose a reason for hiding this comment

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

What happens if there is no DbBirthLsn at the time?

Copy link
Collaborator Author

@serbel324 serbel324 Jun 20, 2025

Choose a reason for hiding this comment

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

It only happens if VDisk is donor, but in that case we can't start syncing with this VDisk

break;
default:
// unknown protocol, report incompatibility and die
RespondWithErroneousStatus(ev, {}, NKikimrProto::BLOCKED);
Copy link
Collaborator

Choose a reason for hiding this comment

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

Why BLOCKED?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I just used it as previously unused erroneous status, but I guess you right, it's not semantically appropriate to use BLOCKED here

// Recipient demanded fullsync restart, kill existing actor
TActorId actorId = it1->second;
Send(actorId, new TEvents::TEvPoisonPill);
auto it2 = UnorderedDataFullSyncSessionLookup.find(actorId);
Copy link
Collaborator

Choose a reason for hiding this comment

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

You can just call erase with a key and check return value to ensure item was actually deleted.


void Handle(const TEvVGenerationChange::TPtr& ev) {
SelfVDiskId = ev->Get()->NewVDiskId;
// We must restart all fullsync sessions when VDisk generation changes
Copy link
Collaborator

Choose a reason for hiding this comment

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

Do we really need to restart them? I'd suppose to identify clients by order number and incarnation guid and restart only when that guid changes. Make sessions more consistent.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

UnorderedDataFullSyncSessionLookup.erase(it2);
return actorId;
}
return TActorId{};
Copy link
Collaborator

Choose a reason for hiding this comment

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

Why optional<TActorId> then?

@github-actions
Copy link

github-actions bot commented Jun 20, 2025

2025-06-20 13:04:22 UTC Pre-commit check linux-x86_64-release-asan for da8b1a1 has started.
2025-06-20 13:04:33 UTC Artifacts will be uploaded here
2025-06-20 13:08:20 UTC ya make is running...
🟡 2025-06-20 15:23:28 UTC Some tests failed, follow the links below. This fail is not in blocking policy yet Going to retry failed tests...

Test history | Ya make output | Test bloat

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
16298 15988 0 99 185 26

2025-06-20 15:25:05 UTC ya make is running... (failed tests rerun, try 2)
🟡 2025-06-20 16:00:10 UTC Some tests failed, follow the links below. This fail is not in blocking policy yet Going to retry failed tests...

Test history | Ya make output | Test bloat | Test bloat

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
1690 (only retried tests) 1440 0 51 173 26

2025-06-20 16:00:30 UTC ya make is running... (failed tests rerun, try 3)
🟡 2025-06-20 16:31:15 UTC Some tests failed, follow the links below. This fail is not in blocking policy yet

Test history | Ya make output | Test bloat | Test bloat | Test bloat

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
1555 (only retried tests) 1308 0 53 169 25

🟢 2025-06-20 16:31:33 UTC Build successful.
🔴 2025-06-20 16:32:08 UTC ydbd size 3.9 GiB changed* by +2.5 MiB, which is >= 2.0 MiB vs main: Alert

ydbd size dash main: 40c48d4 merge: da8b1a1 diff diff %
ydbd size 4 180 699 536 Bytes 4 183 312 304 Bytes +2.5 MiB +0.062%
ydbd stripped size 1 449 321 432 Bytes 1 450 233 048 Bytes +890.2 KiB +0.063%

*please be aware that the difference is based on comparing your commit and the last completed build from the post-commit, check comparation

@github-actions
Copy link

github-actions bot commented Jun 20, 2025

2025-06-20 13:04:22 UTC Pre-commit check linux-x86_64-relwithdebinfo for da8b1a1 has started.
2025-06-20 13:04:34 UTC Artifacts will be uploaded here
2025-06-20 13:08:37 UTC ya make is running...
🟡 2025-06-20 14:57:39 UTC Some tests failed, follow the links below. Going to retry failed tests...

Test history | Ya make output | Test bloat

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
38696 35962 0 3 2676 55

2025-06-20 15:01:27 UTC ya make is running... (failed tests rerun, try 2)
🟢 2025-06-20 15:13:20 UTC Tests successful.

Test history | Ya make output | Test bloat | Test bloat

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
598 (only retried tests) 565 0 0 0 33

🟢 2025-06-20 15:13:32 UTC Build successful.
🟡 2025-06-20 15:13:53 UTC ydbd size 2.2 GiB changed* by +1.4 MiB, which is >= 100.0 KiB vs main: Warning

ydbd size dash main: 40c48d4 merge: da8b1a1 diff diff %
ydbd size 2 376 655 024 Bytes 2 378 137 864 Bytes +1.4 MiB +0.062%
ydbd stripped size 498 045 256 Bytes 498 309 160 Bytes +257.7 KiB +0.053%

*please be aware that the difference is based on comparing your commit and the last completed build from the post-commit, check comparation

@github-actions
Copy link

github-actions bot commented Jun 22, 2025

2025-06-22 15:25:37 UTC Pre-commit check linux-x86_64-relwithdebinfo for 2844cef has started.
2025-06-22 15:25:49 UTC Artifacts will be uploaded here
2025-06-22 15:29:42 UTC ya make is running...
🟡 2025-06-22 17:21:14 UTC Some tests failed, follow the links below. Going to retry failed tests...

Test history | Ya make output | Test bloat

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
38706 36001 0 3 2665 37

2025-06-22 17:24:33 UTC ya make is running... (failed tests rerun, try 2)
🟢 2025-06-22 17:43:17 UTC Tests successful.

Test history | Ya make output | Test bloat | Test bloat

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
480 (only retried tests) 448 0 0 0 32

🟢 2025-06-22 17:43:25 UTC Build successful.
🟢 2025-06-22 17:43:45 UTC ydbd size 2.2 GiB changed* by +90.7 KiB, which is < 100.0 KiB vs main: OK

ydbd size dash main: 4b5dfba merge: 2844cef diff diff %
ydbd size 2 378 943 848 Bytes 2 379 036 688 Bytes +90.7 KiB +0.004%
ydbd stripped size 498 353 128 Bytes 498 376 264 Bytes +22.6 KiB +0.005%

*please be aware that the difference is based on comparing your commit and the last completed build from the post-commit, check comparation

@github-actions
Copy link

github-actions bot commented Jun 22, 2025

2025-06-22 15:26:01 UTC Pre-commit check linux-x86_64-release-asan for 2844cef has started.
2025-06-22 15:26:12 UTC Artifacts will be uploaded here
2025-06-22 15:30:03 UTC ya make is running...
🟡 2025-06-22 17:59:44 UTC Some tests failed, follow the links below. This fail is not in blocking policy yet Going to retry failed tests...

Test history | Ya make output | Test bloat

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
16308 15889 0 123 272 24

2025-06-22 18:01:09 UTC ya make is running... (failed tests rerun, try 2)
🟡 2025-06-22 18:39:39 UTC Some tests failed, follow the links below. This fail is not in blocking policy yet Going to retry failed tests...

Test history | Ya make output | Test bloat | Test bloat

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
2201 (only retried tests) 1946 0 54 177 24

2025-06-22 18:39:59 UTC ya make is running... (failed tests rerun, try 3)
🟡 2025-06-22 19:13:35 UTC Some tests failed, follow the links below. This fail is not in blocking policy yet

Test history | Ya make output | Test bloat | Test bloat | Test bloat

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
1557 (only retried tests) 1310 0 50 177 20

🟢 2025-06-22 19:13:51 UTC Build successful.
🟡 2025-06-22 19:14:25 UTC ydbd size 3.9 GiB changed* by +153.8 KiB, which is >= 100.0 KiB vs main: Warning

ydbd size dash main: 4b5dfba merge: 2844cef diff diff %
ydbd size 4 185 149 944 Bytes 4 185 307 432 Bytes +153.8 KiB +0.004%
ydbd stripped size 1 450 983 192 Bytes 1 451 041 080 Bytes +56.5 KiB +0.004%

*please be aware that the difference is based on comparing your commit and the last completed build from the post-commit, check comparation

@serbel324 serbel324 merged commit e45a3f0 into ydb-platform:main Jun 23, 2025
12 checks passed
@serbel324 serbel324 linked an issue Jul 7, 2025 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update fullsync protocol, take one snapshot per fullsync session

2 participants