[
https://issues.apache.org/jira/browse/CASSGO-92?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
João Reis updated CASSGO-92:
----------------------------
Fix Version/s: 2.1.0
(was: 2.x)
> Add a public method to retrieve StatementMetadata and LogField methods
> ----------------------------------------------------------------------
>
> Key: CASSGO-92
> URL: https://issues.apache.org/jira/browse/CASSGO-92
> Project: Apache Cassandra Go driver
> Issue Type: Improvement
> Components: Core
> Reporter: James Hartig
> Assignee: James Hartig
> Priority: Normal
> Fix For: 2.1.0
>
> Time Spent: 3.5h
> Remaining Estimate: 0h
>
> Right now there are several things that make writing an external
> HostSelectionPolicy:
> # No access to context in `ExecutableStatement`
> # Cannot read statement metadata (via prepare)
> # No access to the underlying Statement or Entries
> # No access to the consistency
> # No access to logging
> # There's no executor on the session when `Init(session)` is called and
> trying to query causes a panic
>
> There are workarounds for some of these things:
> # Assert `ExecutableStatement` matches `interface \{ Context()
> context.Context }`.
> # No workaround
> # Typecast `Statement()` against `*Query` and `*Batch` but you lose support
> for new/custom types.
> # Same as #3
> # Require setting logger separately but cannot create `LogFieldValue`
> # No workaround
> I'd like to start by exposing a `StatementMetadata` method on Session that
> behaves much like `routingKeyInfo` but without a cache. I'll consolidate
> `routingKeyInfo` to use the same code but keep the cache around for that
> internal method. External calls should utilize their own cache if they want
> to cache. We _could_ have `StatementMetadata` do caching but invalidation
> will be hard so leaving it up to the caller means they can control when they
> want to invalidate.
> Also, we should fix session initialization to not initialize the
> HostSelectionPolicy until after `executor` is set. But we should document
> that when `Init(session)` is called, there might not be any ready pool and
> `Init(session)` should not block.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]