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

hinted handoff: Draining doesn't always happen #18761

Open
dawmd opened this issue May 20, 2024 · 3 comments · May be fixed by #18764
Open

hinted handoff: Draining doesn't always happen #18761

dawmd opened this issue May 20, 2024 · 3 comments · May be fixed by #18764
Assignees
Labels
area/hinted handoff Issues related to Hinted Handoff backport/none Backport is not required bug

Comments

@dawmd
Copy link
Contributor

dawmd commented May 20, 2024

As part of #15567, we introduced a data structure keeping track of mappings between hint endpoint managers (identified by host IDs) and the hint directories managed by them (and represented by IP addresses). The data structure is used before the whole cluster is upgraded to a version of Scylla supporting host-ID-based hinted handoff. As an intended consequence, one hint directory may correspond to multiple target nodes in the cluster. If any of them leaves the cluster, we should drain the hint directory. This currently doesn't happen causing hint directories to potentially remain on disk and not be sent at the right time.

@dawmd dawmd added bug area/hinted handoff Issues related to Hinted Handoff backport/none Backport is not required labels May 20, 2024
@dawmd dawmd self-assigned this May 20, 2024
@piodul piodul self-assigned this May 21, 2024
@piodul
Copy link
Contributor

piodul commented May 21, 2024

As an intended consequence, one hint directory may correspond to multiple target nodes in the cluster.

So, what happens with such hints in general? Are they sent to both nodes?

@dawmd
Copy link
Contributor Author

dawmd commented May 21, 2024

So, what happens with such hints in general? Are they sent to both nodes?

They're sent to the node corresponding to the host ID from the mapping. For example, if we have two nodes – A and B – where the host ID of A is H and the IP of B is I, and if there is a mapping [H, I], then all hints will be stored in the hint directory of name I, but those hints will be sent to the node corresponding to H – in this case to A (unless it stops being the replica. Then the hints will be sent to all current replicas of course).

Although it doesn't abide by the intended semantics of hinted handoff, it only happens before the whole cluster has been upgraded. Then everything goes back to functioning the way it is supposed to, i.e. each node has its own hint directory and those hints will be sent to that specific node.

@piodul
Copy link
Contributor

piodul commented May 23, 2024

Although it doesn't abide by the intended semantics of hinted handoff, it only happens before the whole cluster has been upgraded. Then everything goes back to functioning the way it is supposed to, i.e. each node has its own hint directory and those hints will be sent to that specific node.

Ok, I think that's fine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/hinted handoff Issues related to Hinted Handoff backport/none Backport is not required bug
Projects
None yet
2 participants