-
Notifications
You must be signed in to change notification settings - Fork 600
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
YQ-3988 Add stop session reason #12839
base: main
Are you sure you want to change the base?
Conversation
⚪ Test history | Ya make output | Test bloat
⚪ Test history | Ya make output | Test bloat | Test bloat
🟢
*please be aware that the difference is based on comparing your commit and the last completed build from the post-commit, check comparation |
⚪ Test history | Ya make output | Test bloat
🟢
*please be aware that the difference is based on comparing your commit and the last completed build from the post-commit, check comparation |
⚪ |
⚪ |
⚪ Test history | Ya make output | Test bloat
🟢
*please be aware that the difference is based on comparing your commit and the last completed build from the post-commit, check comparation |
⚪ Test history | Ya make output | Test bloat
⚪ Test history | Ya make output | Test bloat | Test bloat
🟢
*please be aware that the difference is based on comparing your commit and the last completed build from the post-commit, check comparation |
@@ -421,6 +427,19 @@ Y_UNIT_TEST_SUITE(RowDispatcherTests) { | |||
MockStopSession(Source1Connection2, PartitionId0, ReadActorId2); | |||
ExpectStopSession(session2, PartitionId0); | |||
} | |||
|
|||
// TODO: not working GrabEdgeEvent() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А точно этот комментарий нужен?
@@ -867,7 +871,7 @@ template <class TEventPtr> | |||
bool TDqPqRdReadActor::CheckSession(SessionInfo& session, const TEventPtr& ev, ui64 partitionId) { | |||
if (ev->Cookie != session.Generation) { | |||
SRC_LOG_W("Wrong message generation (" << typeid(TEventPtr).name() << "), sender " << ev->Sender << " cookie " << ev->Cookie << ", session generation " << session.Generation << ", send TEvStopSession"); | |||
SendStopSession(ev->Sender, partitionId, ev->Cookie); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Не до конца понимаю почему нельзя было послать новый generation. Который сейчас в dq_pq_rd_read_actor и по нему в row_dispatcher все старые поудалять?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Предположим что клиент в RD не удалился (сообщение не дошло и т.п.).
Далее может быть 2 случая когда read_actor переподключается к RD (предположим одна партиция):
- read_actor идет к тому же RD. RD на StartSession видит бОльший generation и пересоздает клиента,
- read_actor идет к другому же RD (координатор сменился и раздал другое распределение). Теперь read_actor о старом RD ничего не знает. В старом RD сессия жива и RD периодически посылает heartbeat. read_actor (на heartbeat) отвечает StopSession при этом проставляя невалидный SeqNo (он и не знает какой нужен т.к. сессия удалена).
Эту проблему можно решить по другому, например на StopSession не проверять SeqNo.
⚪ Test history | Ya make output | Test bloat
⚪ Test history | Ya make output | Test bloat | Test bloat
⚪ Test history | Ya make output | Test bloat | Test bloat | Test bloat
🟢
*please be aware that the difference is based on comparing your commit and the last completed build from the post-commit, check comparation |
⚪ Test history | Ya make output | Test bloat
⚪ Test history | Ya make output | Test bloat | Test bloat
🟢
*please be aware that the difference is based on comparing your commit and the last completed build from the post-commit, check comparation |
Changelog entry
...
Changelog category
Additional information
...