[
https://issues.apache.org/jira/browse/CASSANDRA-19400?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17852168#comment-17852168
]
Caleb Rackliffe commented on CASSANDRA-19400:
---------------------------------------------
Hey [~arkn98]!
I think the easiest way to do this would be for {{filterForQuery()}} to only
consider endpoints at {{UNKNOWN}} if there aren't enough {{BUILD_SUCCEEDED}}
replicas returned to the initial {{queryableEndpoints}}. If we make the change
there, it will apply to all index implementations, as it should. The {{Status}}
enum isn't specific to SAI. Actually, while we're at it, we should also have
{{CassandraIndex}} implement {{isQueryable()}} to mimic
{{StorageAttachedIndex#isQueryable()}}. There's no reason for the legacy 2i
implementation not to take advantage of the {{IndexStatusManager}} and avoid
availability gaps when its indexes are building on a node(s).
This has been on my TODO list for a while, but I'm glad to review/provide any
guidance you need if you'd like to take a swing at it.
> IndexStatusManager needs to prioritize SUCCESS over UNKNOWN states to
> maximize availability
> -------------------------------------------------------------------------------------------
>
> Key: CASSANDRA-19400
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19400
> Project: Cassandra
> Issue Type: Bug
> Components: Feature/SAI
> Reporter: Caleb Rackliffe
> Priority: Low
> Fix For: 5.0.x, 5.x
>
>
> {{IndexStatusManager}} is responsible for knowing what SAI indexes are
> queryable across the ring, endpoint by endpoint. There are two statuses that
> SAI treats as queryable, but it should not treat them equally.
> {{BUILD_SUCCEEDED}} means the index is definitely available and should be
> able to serve queries without issue. {{UNKNOWN}} indicates that the status of
> the index hasn’t propagated yet to this coordinator. It may be just fine, or
> it may not be. If it isn’t a query will not return incorrect results, but it
> will fail. If there are enough {{BUILD_SUCCEEDED}} replicas, we should ignore
> {{UNKNOWN}} replicas and maximize availability. If the UNKNOWN replica is
> going to become {{BUILD_SUCCEEDED}} shortly, it will happily start taking
> requests at that point and spread the load. If not, we’ll avoid futile
> attempts to query it too early.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]