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

make error type compatible with anyhow::Error #130

Open
databasedav opened this issue May 13, 2023 · 6 comments
Open

make error type compatible with anyhow::Error #130

databasedav opened this issue May 13, 2023 · 6 comments

Comments

@databasedav
Copy link

this provides more ergonomic error handling with ?

anyhow::Error

i currently get something like this from an aerospike_client.get(...)?

error[E0277]: `(dyn StdError + std::marker::Send + 'static)` cannot be shared between threads safely
  --> /home/....rs:73:6
   |
73 |     }?;
   |      ^ `(dyn StdError + std::marker::Send + 'static)` cannot be shared between threads safely
   |
   = help: the trait `Sync` is not implemented for `(dyn StdError + std::marker::Send + 'static)`
   = help: the following other types implement trait `FromResidual<R>`:
             <Result<T, F> as FromResidual<Result<Infallible, E>>>
             <Result<T, F> as FromResidual<Yeet<E>>>
   = note: required for `Unique<(dyn StdError + std::marker::Send + 'static)>` to implement `Sync`
   = note: required because it appears within the type `Box<dyn Error + Send>`
   = note: required because it appears within the type `Option<Box<dyn Error + Send>>`
   = note: required because it appears within the type `State`
   = note: required because it appears within the type `Error`
   = note: required for `anyhow::Error` to implement `From<aerospike_core::Error>`
   = note: required for `Result<std::option::Option<stream::Stream>, anyhow::Error>` to implement `FromResidual<Result<Infallible, aerospike_core::Error>>`
@khaf
Copy link
Collaborator

khaf commented May 13, 2023

IIRC that's the fundamental issue with chain_error and why it was abandoned. We are going to move to thiserror to address this issue. I'm a bit tied elsewhere right now so I invite pull requests, but I'll do it myself in a week or two if no one volunteers.

@databasedav
Copy link
Author

@khaf i can do the port to thiserror, is it ok if i target the async branch?

@khaf
Copy link
Collaborator

khaf commented May 14, 2023

Yes, please do it. I'll review and merge it as soon as I can.

@databasedav
Copy link
Author

@khaf getting these testing outputs (with warning omitted) on the async branch

$ cargo test --features rt-tokio
error[E0433]: failed to resolve: could not find `parse_macro_input` in `syn`
 --> aerospike-macro/src/lib.rs:8:22
  |
8 |     let input = syn::parse_macro_input!(input as syn::ItemFn);
  |                      ^^^^^^^^^^^^^^^^^ could not find `parse_macro_input` in `syn`

For more information about this error, try `rustc --explain E0433`.
error: could not compile `aerospike-macro` due to previous error
$ cargo test --features rt-async-std
    Finished test [unoptimized + debuginfo] target(s) in 0.04s
     Running unittests src/lib.rs (target/debug/deps/aerospike-cc66c9d46ef2ad9d)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/client.rs (target/debug/deps/client-e52cb64243e30a29)

running 5 tests
test cluster_name - should panic ... ok
test close ... ok
test nodes ... ok
test get_node ... ok
test node_names ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/lib.rs (target/debug/deps/lib-bc3f125cb9958adc)

running 30 tests
test src::batch::batch_get ... ok
test src::exp_op::exp_ops ... ok
test src::kv::connect ... ok
test src::hll::hll ... ok
test src::cdt_bitwise::cdt_bitwise ... ok
test src::serialization::serialize ... ok
test src::truncate::truncate ... ok
test src::cdt_list::cdt_list ... ok
test src::cdt_map::map_operations ... ok
test src::exp_bitwise::expression_bitwise ... FAILED
test src::exp_list::expression_list ... FAILED
test src::exp::expression_data_types ... FAILED
test src::exp_map::expression_map ... FAILED
test src::exp::expression_aero_5_6 ... FAILED
test src::exp::expression_condition ... FAILED
test src::exp::expression_commands ... FAILED
test src::exp_hll::expression_hll ... FAILED
test src::scan::scan_node ... FAILED
test src::scan::scan_single_consumer ... FAILED
test src::scan::scan_multi_consumer ... FAILED
test src::task::index_task_test ... ok
test src::query::query_node ... ok
test src::query::query_multi_consumer ... ok
test src::query::query_nobins ... ok
test src::query::query_single_consumer ... ok
test src::udf::execute_udf ... ok
test src::index::recreate_index - should panic ... FAILED
test src::task::register_task_test ... ok
test src::exp::expression_compare has been running for over 60 seconds
test src::exp::expression_rec_ops has been running for over 60 seconds

and then seems to hang forever

the top 3 src::exp... failures from above are giving me this sorta error

running 1 test
test src::exp::expression_data_types ... FAILED

failures:

---- src::exp::expression_data_types stdout ----
thread 'src::exp::expression_data_types' panicked at 'Error(Msg("Invalid size for buffer: 369098752"), State { next_error: None, backtrace: InternalBacktrace { backtrace: None } })', tests/src/exp.rs:777:25
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    src::exp::expression_data_types

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 29 filtered out; finished in 0.04s

this is all hitting a ce-6.3.0.2 docker container

i don't see any of these errors in the ci, but i also don't see these running here https://ci.appveyor.com/project/aerospike/aerospike-client-rust

any idea what's causing the invalid buffer size errors? just wanted to make the tests pass locally before replacing the errors

@khaf
Copy link
Collaborator

khaf commented May 15, 2023

Yes I have fixed all of these with that last release, and will push the changes today if I get the time to fix a couple of tests due to server v6 default config changes.

@khaf
Copy link
Collaborator

khaf commented May 15, 2023

Pushed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants