joao-r-reis commented on code in PR #1793: URL: https://github.com/apache/cassandra-gocql-driver/pull/1793#discussion_r1937391877
########## query_executor.go: ########## @@ -83,7 +84,27 @@ func (q *queryExecutor) speculate(ctx context.Context, qry ExecutableQuery, sp S } func (q *queryExecutor) executeQuery(qry ExecutableQuery) (*Iter, error) { - hostIter := q.policy.Pick(qry) + var hostIter NextHost + + // check if the host id is specified for the query, + // if it is, the query should be executed at the corresponding host. + if hostID := qry.GetHostID(); hostID != "" { + pool, ok := q.pool.getPoolByHostID(hostID) + if !ok || !pool.host.IsUp() { + return &Iter{err: ErrNoConnections}, nil + } + hostIter = func() SelectedHost { + // forcing hostIter to always return the same host + // it makes any retries and speculative executions run on the specified host Review Comment: I'm more worried that someone might run into endless executions in production, face some kind of outage and only then realize that they need to provide context to ensure the goroutine doesn't get stuck on a potentially infinite loop. But I think in most cases the retry policy will have a max number of retries anyways so that's good enough for me, let's just make sure this is documented in the `SetHostID` method -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: pr-unsubscr...@cassandra.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: pr-unsubscr...@cassandra.apache.org For additional commands, e-mail: pr-h...@cassandra.apache.org