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

Restructure modules - purge transport module #1163

Merged
merged 60 commits into from
Jan 10, 2025

Conversation

wprzytula
Copy link
Collaborator

@wprzytula wprzytula commented Jan 1, 2025

This is a revival of #804.

Motivation

The division into modules used to be poor. The transport module has long been abused, as a bag full of everything, with no clear intention behind it.

What's done

The transport module was dissolved. Its contents were grouped in other modules, many of them newly introduced. The new modules were documented with docstrings, so that it's clear what is the intended scope of each module.

ClusterData was renamed to ClusterState, which we believe suits its semantics better.

Now, the module tree looks the following way (omitting the unchanged modules - cloud, statement, utils, and authentication):

- client
  - caching_session.rs
  - execution_profile.rs
  - pager.rs
  - self_identity.rs
  - session_builder.rs
  - session.rs
  - session_test.rs
- cluster
  - metadata.rs
  - node.rs
  - state.rs
  - worker.rs
- network
  - connection.rs
  - connection_pool.rs
- errors.rs (top-level module)
- policies
  - address_translator.rs
  - host_filter.rs
  - load_balancing
    - default.rs
    - plan.rs
  - retry
    - default.rs
    - downgrading_consistency.rs
    - fallthrough.rs
    - retry_policy.rs
  - speculative_execution.rs
- observability
  - driver_tracing.rs
  - history.rs
  - metrics.rs
  - tracing.rs
- response
  - legacy_query_result.rs
  - query_result.rs
  - request_response.rs
- routing
  - locator
    - (unchanged contents)
  - partitioner.rs
  - sharding.rs

Pre-review checklist

  • I have split my patch into logically separate commits.
  • All commit messages clearly explain what they change and why.
  • [ ] I added relevant tests for new features and bug fixes.
  • All commits compile, pass static checks and pass test.
  • PR description sums up the changes and reasons why they should be introduced.
  • I have provided docstrings for the public items that I want to introduce.
  • I have adjusted the documentation in ./docs/source/.
  • [ ] I added appropriate Fixes: annotations to PR description.

@wprzytula wprzytula added this to the 0.16.0 milestone Jan 1, 2025
@github-actions github-actions bot added the semver-checks-breaking cargo-semver-checks reports that this PR introduces breaking API changes label Jan 1, 2025
Copy link

github-actions bot commented Jan 1, 2025

cargo semver-checks detected some API incompatibilities in this PR.
Checked commit: 005354d

See the following report for details:

cargo semver-checks output
./scripts/semver-checks.sh --baseline-rev 57ad5ad111e371baf3610d34cd15a7f10d05df18
+ cargo semver-checks -p scylla -p scylla-cql --baseline-rev 57ad5ad111e371baf3610d34cd15a7f10d05df18
     Cloning 57ad5ad111e371baf3610d34cd15a7f10d05df18
    Building scylla v0.15.0 (current)
       Built [  22.382s] (current)
     Parsing scylla v0.15.0 (current)
      Parsed [   0.051s] (current)
    Building scylla v0.15.0 (baseline)
       Built [  22.492s] (baseline)
     Parsing scylla v0.15.0 (baseline)
      Parsed [   0.050s] (baseline)
    Checking scylla v0.15.0 -> v0.15.0 (no change)
     Checked [   0.081s] 107 checks: 102 pass, 5 fail, 0 warn, 0 skip

--- failure enum_missing: pub enum removed or renamed ---

Description:
A publicly-visible enum cannot be imported by its prior path. A `pub use` may have been removed, or the enum itself may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.38.0/src/lints/enum_missing.ron

Failed in:
  enum scylla::transport::query_result::MaybeFirstRowError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/query_result.rs:475
  enum scylla::transport::topology::CqlType, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/topology.rs:242
  enum scylla::transport::session::LegacyDeserializationApi, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/session.rs:180
  enum scylla::transport::query_result::SingleRowError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/query_result.rs:503
  enum scylla::transport::iterator::LegacyNextRowError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/iterator.rs:1162
  enum scylla::transport::session_builder::CloudMode, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/session_builder.rs:53
  enum scylla::history::AttemptResult, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/history.rs:283
  enum scylla::transport::errors::UseKeyspaceProtocolError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:376
  enum scylla::transport::retry_policy::RetryDecision, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/retry_policy.rs:21
  enum scylla::retry_policy::RetryDecision, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/retry_policy.rs:21
  enum scylla::transport::legacy_query_result::SingleRowError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/legacy_query_result.rs:305
  enum scylla::history::QueryHistoryResult, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/history.rs:264
  enum scylla::transport::errors::BrokenConnectionErrorKind, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:828
  enum scylla::transport::errors::BadQuery, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:576
  enum scylla::transport::errors::NewSessionError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:216
  enum scylla::transport::errors::SchemaVersionFetchError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:389
  enum scylla::transport::errors::UdtMetadataError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:531
  enum scylla::history::HistoryEvent, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/history.rs:88
  enum scylla::transport::errors::TablesMetadataError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:544
  enum scylla::transport::query_result::IntoRowsResultError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/query_result.rs:454
  enum scylla::transport::errors::ConnectionSetupRequestErrorKind, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:725
  enum scylla::transport::errors::TracingProtocolError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:402
  enum scylla::transport::session_builder::DefaultMode, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/session_builder.rs:45
  enum scylla::transport::legacy_query_result::SingleRowTypedError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/legacy_query_result.rs:324
  enum scylla::transport::errors::QueryError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:47
  enum scylla::transport::errors::RequestError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:971
  enum scylla::transport::topology::Strategy, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/topology.rs:398
  enum scylla::transport::errors::CqlEventHandlingError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:881
  enum scylla::transport::topology::ColumnKind, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/topology.rs:371
  enum scylla::transport::errors::MetadataError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:447
  enum scylla::transport::legacy_query_result::MaybeFirstRowTypedError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/legacy_query_result.rs:286
  enum scylla::transport::NodeAddr, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/node.rs:36
  enum scylla::transport::errors::PeersMetadataError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:472
  enum scylla::transport::errors::ProtocolError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:315
  enum scylla::transport::errors::ViewsMetadataError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:566
  enum scylla::transport::topology::NativeType, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/topology.rs:278
  enum scylla::transport::errors::ConnectionPoolError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:627
  enum scylla::transport::errors::KeyspaceStrategyError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:509
  enum scylla::transport::legacy_query_result::FirstRowTypedError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/legacy_query_result.rs:263
  enum scylla::transport::legacy_query_result::FirstRowError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/legacy_query_result.rs:249
  enum scylla::transport::errors::BadKeyspaceName, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:609
  enum scylla::transport::legacy_query_result::IntoLegacyQueryResultError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/legacy_query_result.rs:203
  enum scylla::transport::query_result::FirstRowError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/query_result.rs:487
  enum scylla::transport::session::CurrentDeserializationApi, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/session.rs:172
  enum scylla::transport::KnownNode, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/node.rs:228
  enum scylla::transport::topology::CollectionType, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/topology.rs:364
  enum scylla::transport::session::PoolSize, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/connection_pool.rs:35
  enum scylla::transport::errors::ConnectionError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:648
  enum scylla::transport::errors::KeyspacesMetadataError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:493
  enum scylla::transport::query_result::RowsError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/query_result.rs:467
  enum scylla::transport::errors::TranslationError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:700
  enum scylla::transport::session::TranslationError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:700
  enum scylla::transport::iterator::NextPageError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/iterator.rs:1051
  enum scylla::transport::iterator::NextRowError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/iterator.rs:1063

--- failure function_missing: pub fn removed or renamed ---

Description:
A publicly-visible function cannot be imported by its prior path. A `pub use` may have been removed, or the function itself may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.38.0/src/lints/function_missing.ron

Failed in:
  function scylla::transport::partitioner::calculate_token_for_partition_key, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/partitioner.rs:338

--- failure module_missing: pub module removed or renamed ---

Description:
A publicly-visible module cannot be imported by its prior path. A `pub use` may have been removed, or the module may have been renamed, removed, or made non-public.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.38.0/src/lints/module_missing.ron

Failed in:
  mod scylla::transport::retry_policy, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/retry_policy.rs:1
  mod scylla::retry_policy, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/retry_policy.rs:1
  mod scylla::transport::locator, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/locator/mod.rs:1
  mod scylla::transport::load_balancing, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/load_balancing/mod.rs:1
  mod scylla::load_balancing, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/load_balancing/mod.rs:1
  mod scylla::transport::iterator, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/iterator.rs:1
  mod scylla::transport, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/mod.rs:1
  mod scylla::transport::session_builder, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/session_builder.rs:1
  mod scylla::transport::errors, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:1
  mod scylla::tracing, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/tracing.rs:1
  mod scylla::transport::speculative_execution, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/speculative_execution.rs:1
  mod scylla::speculative_execution, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/speculative_execution.rs:1
  mod scylla::transport::downgrading_consistency_retry_policy, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/downgrading_consistency_retry_policy.rs:1
  mod scylla::transport::execution_profile, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/execution_profile.rs:1
  mod scylla::execution_profile, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/execution_profile.rs:1
  mod scylla::transport::session, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/session.rs:1
  mod scylla::history, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/history.rs:1
  mod scylla::transport::partitioner, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/partitioner.rs:1
  mod scylla::transport::topology, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/topology.rs:1
  mod scylla::transport::host_filter, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/host_filter.rs:1
  mod scylla::host_filter, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/host_filter.rs:1
  mod scylla::transport::query_result, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/query_result.rs:1
  mod scylla::transport::legacy_query_result, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/legacy_query_result.rs:1

--- failure struct_missing: pub struct removed or renamed ---

Description:
A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.38.0/src/lints/struct_missing.ron

Failed in:
  struct scylla::transport::load_balancing::DefaultPolicyBuilder, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/load_balancing/default.rs:940
  struct scylla::load_balancing::DefaultPolicyBuilder, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/load_balancing/default.rs:940
  struct scylla::transport::retry_policy::DefaultRetrySession, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/retry_policy.rs:98
  struct scylla::retry_policy::DefaultRetrySession, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/retry_policy.rs:98
  struct scylla::transport::retry_policy::DefaultRetryPolicy, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/retry_policy.rs:78
  struct scylla::retry_policy::DefaultRetryPolicy, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/retry_policy.rs:78
  struct scylla::transport::errors::BrokenConnectionError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:813
  struct scylla::transport::execution_profile::ExecutionProfile, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/execution_profile.rs:398
  struct scylla::execution_profile::ExecutionProfile, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/execution_profile.rs:398
  struct scylla::transport::ExecutionProfile, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/execution_profile.rs:398
  struct scylla::ExecutionProfile, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/execution_profile.rs:398
  struct scylla::transport::host_filter::AcceptAllHostFilter, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/host_filter.rs:21
  struct scylla::host_filter::AcceptAllHostFilter, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/host_filter.rs:21
  struct scylla::transport::session::SessionConfig, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/session.rs:241
  struct scylla::SessionConfig, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/session.rs:241
  struct scylla::transport::query_result::QueryResult, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/query_result.rs:138
  struct scylla::QueryResult, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/query_result.rs:138
  struct scylla::transport::locator::ReplicaLocator, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/locator/mod.rs:32
  struct scylla::transport::topology::Peer, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/topology.rs:70
  struct scylla::history::SpeculativeId, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/history.rs:27
  struct scylla::transport::host_filter::DcHostFilter, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/host_filter.rs:68
  struct scylla::host_filter::DcHostFilter, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/host_filter.rs:68
  struct scylla::transport::topology::MaterializedView, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/topology.rs:172
  struct scylla::transport::legacy_query_result::TypedRowIter, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/legacy_query_result.rs:40
  struct scylla::transport::session::TypedRowIter, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/legacy_query_result.rs:40
  struct scylla::transport::topology::MissingUserDefinedType, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/topology.rs:272
  struct scylla::transport::Node, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/node.rs:74
  struct scylla::transport::query_result::ColumnSpecs, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/query_result.rs:85
  struct scylla::history::HistoryCollectorData, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/history.rs:80
  struct scylla::history::QueryId, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/history.rs:17
  struct scylla::transport::host_filter::AllowListHostFilter, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/host_filter.rs:31
  struct scylla::host_filter::AllowListHostFilter, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/host_filter.rs:31
  struct scylla::tracing::TracingEvent, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/tracing.rs:29
  struct scylla::history::StructuredHistory, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/history.rs:251
  struct scylla::transport::downgrading_consistency_retry_policy::DowngradingConsistencyRetryPolicy, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/downgrading_consistency_retry_policy.rs:15
  struct scylla::transport::retry_policy::FallthroughRetryPolicy, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/retry_policy.rs:46
  struct scylla::retry_policy::FallthroughRetryPolicy, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/retry_policy.rs:46
  struct scylla::transport::partitioner::Murmur3PartitionerHasher, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/partitioner.rs:104
  struct scylla::transport::legacy_query_result::RowsNotExpectedError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/legacy_query_result.rs:246
  struct scylla::transport::iterator::LegacyTypedRowIterator, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/iterator.rs:1137
  struct scylla::transport::errors::ConnectionSetupRequestError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/errors.rs:718
  struct scylla::transport::iterator::LegacyRowIterator, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/iterator.rs:1084
  struct scylla::transport::locator::ReplicaSet, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/locator/mod.rs:291
  struct scylla::transport::speculative_execution::PercentileSpeculativeExecutionPolicy, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/speculative_execution.rs:44
  struct scylla::speculative_execution::PercentileSpeculativeExecutionPolicy, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/speculative_execution.rs:44
  struct scylla::history::FiberHistory, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/history.rs:270
  struct scylla::transport::legacy_query_result::RowsExpectedError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/legacy_query_result.rs:233
  struct scylla::transport::iterator::QueryPager, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/iterator.rs:558
  struct scylla::transport::execution_profile::ExecutionProfileHandle, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/execution_profile.rs:504
  struct scylla::execution_profile::ExecutionProfileHandle, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/execution_profile.rs:504
  struct scylla::tracing::TracingInfo, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/tracing.rs:12
  struct scylla::transport::retry_policy::QueryInfo, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/retry_policy.rs:9
  struct scylla::retry_policy::QueryInfo, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/retry_policy.rs:9
  struct scylla::transport::execution_profile::ExecutionProfileBuilder, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/execution_profile.rs:231
  struct scylla::execution_profile::ExecutionProfileBuilder, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/execution_profile.rs:231
  struct scylla::transport::topology::NativeTypeFromStrError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/topology.rs:303
  struct scylla::transport::iterator::TypedRowStream, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/iterator.rs:988
  struct scylla::Metrics, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/metrics.rs:25
  struct scylla::transport::legacy_query_result::LegacyQueryResult, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/legacy_query_result.rs:61
  struct scylla::LegacyQueryResult, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/legacy_query_result.rs:61
  struct scylla::transport::topology::UserDefinedType, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/topology.rs:264
  struct scylla::history::HistoryCollector, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/history.rs:75
  struct scylla::transport::query_result::ColumnSpecView, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/query_result.rs:49
  struct scylla::transport::downgrading_consistency_retry_policy::DowngradingConsistencyRetrySession, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/downgrading_consistency_retry_policy.rs:35
  struct scylla::transport::partitioner::Murmur3Partitioner, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/partitioner.rs:89
  struct scylla::MetricsError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/metrics.rs:8
  struct scylla::transport::topology::Keyspace, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/topology.rs:153
  struct scylla::history::AttemptHistory, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/history.rs:276
  struct scylla::transport::ClusterData, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/cluster.rs:75
  struct scylla::transport::partitioner::CDCPartitioner, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/partitioner.rs:270
  struct scylla::transport::topology::UntranslatedPeer, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/topology.rs:145
  struct scylla::transport::session::GenericSession, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/session.rs:187
  struct scylla::transport::topology::ColumnKindFromStrError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/topology.rs:380
  struct scylla::transport::load_balancing::LatencyAwarenessBuilder, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/load_balancing/default.rs:2934
  struct scylla::load_balancing::LatencyAwarenessBuilder, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/load_balancing/default.rs:2934
  struct scylla::transport::load_balancing::DefaultPolicy, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/load_balancing/default.rs:111
  struct scylla::load_balancing::DefaultPolicy, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/load_balancing/default.rs:111
  struct scylla::transport::query_result::ResultNotRowsError, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/query_result.rs:522
  struct scylla::transport::query_result::QueryRowsResult, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/query_result.rs:325
  struct scylla::QueryRowsResult, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/query_result.rs:325
  struct scylla::transport::load_balancing::Plan, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/load_balancing/plan.rs:68
  struct scylla::load_balancing::Plan, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/load_balancing/plan.rs:68
  struct scylla::transport::partitioner::CDCPartitionerHasher, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/partitioner.rs:272
  struct scylla::history::QueryHistory, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/history.rs:256
  struct scylla::transport::locator::TokenRing, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/locator/token_ring.rs:11
  struct scylla::transport::session_builder::GenericSessionBuilder, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/session_builder.rs:78
  struct scylla::transport::topology::Column, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/topology.rs:178
  struct scylla::transport::query_result::TableSpecView, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/query_result.rs:20
  struct scylla::transport::topology::PeerEndpoint, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/topology.rs:111
  struct scylla::transport::SelfIdentity, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/connection.rs:384
  struct scylla::transport::retry_policy::FallthroughRetrySession, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/retry_policy.rs:47
  struct scylla::retry_policy::FallthroughRetrySession, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/retry_policy.rs:47
  struct scylla::transport::topology::Table, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/topology.rs:164
  struct scylla::history::AttemptId, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/history.rs:21
  struct scylla::transport::load_balancing::RoutingInfo, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/load_balancing/mod.rs:21
  struct scylla::load_balancing::RoutingInfo, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/load_balancing/mod.rs:21
  struct scylla::transport::speculative_execution::Context, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/speculative_execution.rs:14
  struct scylla::speculative_execution::Context, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/speculative_execution.rs:14
  struct scylla::transport::locator::ReplicaSetIterator, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/locator/mod.rs:504
  struct scylla::transport::speculative_execution::SimpleSpeculativeExecutionPolicy, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/speculative_execution.rs:32
  struct scylla::speculative_execution::SimpleSpeculativeExecutionPolicy, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/speculative_execution.rs:32
  struct scylla::transport::locator::ReplicasOrdered, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/locator/mod.rs:646
  struct scylla::transport::locator::ReplicasOrderedIterator, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/locator/mod.rs:651
  struct scylla::GenericCachingSession, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/caching_session.rs:43

--- failure trait_missing: pub trait removed or renamed ---

Description:
A publicly-visible trait cannot be imported by its prior path. A `pub use` may have been removed, or the trait itself may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.38.0/src/lints/trait_missing.ron

Failed in:
  trait scylla::transport::retry_policy::RetryPolicy, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/retry_policy.rs:29
  trait scylla::retry_policy::RetryPolicy, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/retry_policy.rs:29
  trait scylla::transport::legacy_query_result::IntoTypedRows, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/legacy_query_result.rs:19
  trait scylla::transport::session::IntoTypedRows, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/legacy_query_result.rs:19
  trait scylla::IntoTypedRows, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/legacy_query_result.rs:19
  trait scylla::transport::speculative_execution::SpeculativeExecutionPolicy, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/speculative_execution.rs:20
  trait scylla::speculative_execution::SpeculativeExecutionPolicy, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/speculative_execution.rs:20
  trait scylla::transport::partitioner::PartitionerHasher, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/partitioner.rs:84
  trait scylla::transport::session::AddressTranslator, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/session.rs:122
  trait scylla::transport::partitioner::Partitioner, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/partitioner.rs:67
  trait scylla::transport::session_builder::SessionBuilderKind, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/session_builder.rs:42
  trait scylla::transport::host_filter::HostFilter, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/host_filter.rs:15
  trait scylla::host_filter::HostFilter, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/host_filter.rs:15
  trait scylla::history::HistoryListener, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/history.rs:37
  trait scylla::transport::load_balancing::LoadBalancingPolicy, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/load_balancing/mod.rs:70
  trait scylla::load_balancing::LoadBalancingPolicy, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/load_balancing/mod.rs:70
  trait scylla::transport::session::DeserializationApiKind, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/session.rs:170
  trait scylla::transport::retry_policy::RetrySession, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/retry_policy.rs:36
  trait scylla::retry_policy::RetrySession, previously in file /home/runner/work/scylla-rust-driver/scylla-rust-driver/target/semver-checks/git-57ad5ad111e371baf3610d34cd15a7f10d05df18/111142da875b42077c7156bb27fe8441206ef0c6/scylla/src/transport/retry_policy.rs:36

     Summary semver requires new major version: 5 major and 0 minor checks failed
    Finished [  46.010s] scylla
    Building scylla-cql v0.4.0 (current)
       Built [  11.172s] (current)
     Parsing scylla-cql v0.4.0 (current)
      Parsed [   0.036s] (current)
    Building scylla-cql v0.4.0 (baseline)
       Built [  11.107s] (baseline)
     Parsing scylla-cql v0.4.0 (baseline)
      Parsed [   0.034s] (baseline)
    Checking scylla-cql v0.4.0 -> v0.4.0 (no change)
     Checked [   0.111s] 107 checks: 107 pass, 0 skip
     Summary no semver update required
    Finished [  22.946s] scylla-cql
make: *** [Makefile:61: semver-rev] Error 1

@wprzytula wprzytula force-pushed the restructure-modules branch from d380148 to e3e3f28 Compare January 1, 2025 20:00
@wprzytula wprzytula self-assigned this Jan 1, 2025
@wprzytula wprzytula force-pushed the restructure-modules branch 2 times, most recently from e1b6fdf to 68fd5d0 Compare January 1, 2025 20:30
Copy link
Collaborator

@Lorak-mmk Lorak-mmk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really great work, this is something that was really needed here!

I'm posting the review for ~first half of the PR so that you can address comments quicker.

A few thoughts on the structure after reading the description:

  • execution module is quite big and contains various things that are not very related.
  • First thing that comes to my mind is to split off "policies" module from "execution" module, containing load balancing, retries and speculative execution.
  • I did not yet reach those modules in review, so I'm not 100% sure what they contain, but we could also split off something like "inspection" / "introspection" / "observability" (I'm not sure what is the best name) containing driver_tracing.rs, history.rs, metrics.rs and tracing.rs.
  • errors.rs should imo be a top-level file as it is not specific to "execution" module.
  • After those changes, "execution" is left with "execution_profile.rs" and "pager.rs". It can be left like this, or maybe merged with session? I'm not sure.

Apart from removing oversized "execution" module, I really believe those changes would simply improve the structure.

I see you did not mark "All commits compile, pass static checks and pass test.", but I see that the commits I reviewed until now are done in a way to maintains this property. I found one problem which I posted in a comment.
It would be really nice to fix this and potentially other such issues and maintain the passing state of CI throughout the PR - it looks like it should not be a lot of effort now.

scylla/src/lib.rs Outdated Show resolved Hide resolved
scylla/src/session/mod.rs Outdated Show resolved Hide resolved
scylla/src/transport/mod.rs Outdated Show resolved Hide resolved
scylla/src/session/session.rs Outdated Show resolved Hide resolved
scylla/src/connection/mod.rs Outdated Show resolved Hide resolved
scylla/src/cluster/mod.rs Outdated Show resolved Hide resolved
docs/source/load-balancing/load-balancing.md Outdated Show resolved Hide resolved
scylla/src/cluster/mod.rs Outdated Show resolved Hide resolved
scylla/src/execution/mod.rs Outdated Show resolved Hide resolved
scylla/src/execution/retries/mod.rs Outdated Show resolved Hide resolved
Copy link
Collaborator

@Lorak-mmk Lorak-mmk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Second half was much quicker to review :D

scylla/src/session/mod.rs Outdated Show resolved Hide resolved
scylla/src/execution/mod.rs Outdated Show resolved Hide resolved
scylla/src/response/mod.rs Show resolved Hide resolved
scylla/src/response/mod.rs Outdated Show resolved Hide resolved
@Lorak-mmk
Copy link
Collaborator

Oh wow, I understand now why some comments are marked as outdated despite there not being any changes since the review.
GitHub marks comments as outdated if the current final state of the commented code is different - e.g. if the next commits changed this code again.

Another example of GitHub being not an appropriate tool for reviews.

@wprzytula
Copy link
Collaborator Author

wprzytula commented Jan 4, 2025

Really great work, this is something that was really needed here!

🎉

I'm posting the review for ~first half of the PR so that you can address comments quicker.

A few thoughts on the structure after reading the description:

  • execution module is quite big and contains various things that are not very related.

It's quite big, that's true.

  • First thing that comes to my mind is to split off "policies" module from "execution" module, containing load balancing, retries and speculative execution.

Extracting a policies module makes sense to me, but I would still keep it in the execution module, because my intention was to hold all entities that control and configure statement execution in the execution module.

  • I did not yet reach those modules in review, so I'm not 100% sure what they contain, but we could also split off something like "inspection" / "introspection" / "observability" (I'm not sure what is the best name) containing driver_tracing.rs, history.rs, metrics.rs and tracing.rs.

💯 , I'll extract those into a new top-level observability module.

  • errors.rs should imo be a top-level file as it is not specific to "execution" module.

Agreed.

  • After those changes, "execution" is left with "execution_profile.rs" and "pager.rs". It can be left like this, or maybe merged with session? I'm not sure.

To me, execution_profile.rs, together with policies, makes great sense to constitute the execution module. However, I've not been sure at all where to put pager.rs. If not in execution, session would be my second guess.

Apart from removing oversized "execution" module, I really believe those changes would simply improve the structure.

WDYT about my above alternative suggestions to improve the execution module?

I see you did not mark "All commits compile, pass static checks and pass test.", but I see that the commits I reviewed until now are done in a way to maintains this property. I found one problem which I posted in a comment. It would be really nice to fix this and potentially other such issues and maintain the passing state of CI throughout the PR - it looks like it should not be a lot of effort now.

🎉

@Lorak-mmk
Copy link
Collaborator

Extracting a policies module makes sense to me, but I would still keep it in the execution module, because my intention was to hold all entities that control and configure statement execution in the execution module.

I proposed it as a top-level module because of the possibility that in the future we add policies that are not related to statement execution. There is for example an issue about ReconnectPolicy: #184 and related #559 .

There is also some relevant work in gocql: scylladb/gocql#231

If we keep policies inside execution then we have to either add such policies there (which is weird because it does not affect statement execution), or outside the policies module (which is weird for obvious reasons).

@wprzytula
Copy link
Collaborator Author

wprzytula commented Jan 4, 2025

Extracting a policies module makes sense to me, but I would still keep it in the execution module, because my intention was to hold all entities that control and configure statement execution in the execution module.

I proposed it as a top-level module because of the possibility that in the future we add policies that are not related to statement execution. There is for example an issue about ReconnectPolicy: #184 and related #559 .

I see no reason to group various policies in one module just because they are all called policies. To me, execution-related policies can be grouped together, but ReconnectPolicy should not be anywhere close to those.

It makes sense IMO to have scylla::execution::policies path, because it sounds good when read from left to right, showing clearly what's inside and how it's related.

@Lorak-mmk
Copy link
Collaborator

I see no reason to group various policies in one module just because they are all called policies. To me, execution-related policies can be grouped together, but ReconnectPolicy should not be anywhere close to those.

It makes sense IMO to have scylla::execution::policies path, because it sounds good when read from left to right, showing clearly what's inside and how it's related.

The reason I see is that the policies (either execution-related or not) are the main (only?) pluggable points of the driver - user can influence the behavior of the driver by writing their own implementation of those policies.
It would be nice to have all such customization points in one place.

This is done similarly in other driver, so keeping the structure familiar for other people is an additional advantage.

Java Driver 3.x has a policies folder: https://github.com/scylladb/java-driver/tree/scylla-3.x/driver-core/src/main/java/com/datastax/driver/core/policies
It includes not only LBP / Retry / SE, but also AddressTranslator, ReconnectionPolicy and HostFilter.

Python Driver has policies.py file: https://github.com/scylladb/python-driver/blob/master/cassandra/policies.py
It contains LBP, Retry and SE and also AddressTranslator and ReconnectionPolicy

GoCql has a policies.go file https://github.com/scylladb/gocql/blob/master/policies.go
It contans retry policies, LBP, SE and also reconnection policy and other stuff (ConvictionPolicy, ReadyPolicy)

@wprzytula
Copy link
Collaborator Author

The reason I see is that the policies (either execution-related or not) are the main (only?) pluggable points of the driver - user can influence the behavior of the driver by writing their own implementation of those policies. It would be nice to have all such customization points in one place.

This is done similarly in other driver, so keeping the structure familiar for other people is an additional advantage.

This convinced me. Let's make a similar module for all user-implementable traits that configure driver's behaviour.

@wprzytula wprzytula force-pushed the restructure-modules branch from 68fd5d0 to c7b7252 Compare January 4, 2025 20:36
@wprzytula
Copy link
Collaborator Author

v2.0: addressed some of the comments (mostly the resolved ones).

@wprzytula wprzytula force-pushed the restructure-modules branch from c7b7252 to 6991831 Compare January 5, 2025 10:18
@wprzytula
Copy link
Collaborator Author

v2.1: addressed another bunch of comments.

  • extracted policies module with LBP, SEP, RP, HostFilter and AddressTranslator;
  • moved pager.rs and execution_profile.rs to session module, annihilated execution module.

@wprzytula wprzytula force-pushed the restructure-modules branch from 6991831 to 57aad86 Compare January 5, 2025 10:30
@wprzytula
Copy link
Collaborator Author

v2.1.1: fixed docs.

@wprzytula
Copy link
Collaborator Author

The module tree should reflect all suggestions proposed by @Lorak-mmk. Please confirm that this is the case.

@wprzytula wprzytula force-pushed the restructure-modules branch from 57aad86 to 9812fb1 Compare January 5, 2025 10:44
@wprzytula
Copy link
Collaborator Author

v2.1.2: appeased Clippy.

@wprzytula wprzytula force-pushed the restructure-modules branch from 9812fb1 to 989bee0 Compare January 8, 2025 13:09
@wprzytula
Copy link
Collaborator Author

v2.2: addressed all remaining comments.

@wprzytula wprzytula force-pushed the restructure-modules branch from 989bee0 to 044c5f0 Compare January 8, 2025 14:02
@wprzytula wprzytula force-pushed the restructure-modules branch from 2b39daa to 005354d Compare January 9, 2025 20:19
@wprzytula
Copy link
Collaborator Author

v2.2.4 - fixed serverless again...

@piodul
Copy link
Collaborator

piodul commented Jan 10, 2025

One more thing - it would probably be nice to mention in the description of the PR which types were renamed, for posterity (take the contents of #1163 (comment) and put them in the description). Otherwise, LGTM.

@wprzytula wprzytula merged commit 7ac4d45 into scylladb:main Jan 10, 2025
12 checks passed
@wprzytula wprzytula deleted the restructure-modules branch January 10, 2025 12:43
@Lorak-mmk
Copy link
Collaborator

One more thing - it would probably be nice to mention in the description of the PR which types were renamed, for posterity (take the contents of #1163 (comment) and put them in the description). Otherwise, LGTM.

We'll definitely need to put description of those changes in the release notes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
semver-checks-breaking cargo-semver-checks reports that this PR introduces breaking API changes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants