* updates ScanTask.subscribe() to return rsp_tx instead of awaiting it, returns service errors from grpc methods
* Adds a timeout to scan service and improves error message when subscribe responders are dropped
* Returns an error from `RegisterKeys` svc request when no keys are registered
* tests register keys error message
* Adds test for timeouts
* adds TODOs for fixing bugs
* Orders scan service requests in scan method
* removes CheckKeyHashes request
* fixes bad merge conflict resolution
* update test to check downcast to Elapsed error
* update errors in scan method
* update error msg in register_keys method
* fixes compiler error
* adds tonic-reflection
* adds listen_addr to log
* Adds user guide for scan server to zebra book
* fixes typo
* Applies suggestions from code review
* update link
Co-authored-by: Marek <mail@marek.onl>
---------
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
Co-authored-by: Marek <mail@marek.onl>
* update scan task to notify subscribe caller once the new subscribed_keys are sent on the watch channel
* Fixes timing bug in scan gRPC method:
Joins register/subscribe scan service calls, sends SubscribeResults request first, and filters out duplicate results from channel
* Removes outdated TODO
* wraps subscribed_keys in an Arc before sending to watch channel, fixes typo
* Remove result senders for keys that have been removed
* add grpc method unit tests
* add test module description
* runs tests in sequence, adds some messages to assertions, and minor cleanups (#8296)
* fix field name change
---------
Co-authored-by: Arya <aryasolhi@gmail.com>
* Adds scan method
* fix clippy warning
* Skip empty results and don't panic if the gRPC client disconnects
* moves `Results` request above `SubscribeResults` request to avoid duplicate results.
* returns early if there's a send error when sending initial results and updates response type
* move responder buffer size to const
* Adds a snapshot test for the `scan` method
* updates snapshots
* adds clear_results RPC method for zebra-scan
* adds delete_keys rpc method
* adds docs
* Update zebra-grpc/proto/scanner.proto
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
* Apply suggestions from code review
* start zebra-scan gRPC server from zebrad start command
* adds a test that the scanner starts with zebrad
* adds a `listen_addr` field to the shielded scan config
* updates test to use a random port and set the listen_addr config field
* fixes test
* Update zebra-scan/src/config.rs
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
* fixes panic when trying to open multiple mutable storage instances.
* open db in blocking task
* fixes test
---------
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
* add `zebra-grpc` crate
* add missing fields
* convert to a lib
* add zebra-scan and tonic as depenency
* add a getinfo grpc
* remove zebra-scanner dependency
* Adds scan_service field to scanner grpc server
* remove dependency
* test launching the grpc server from the zebra-scan crate (not building)
* fix async issue
* fixes build issues
* add binary for manual testing
* try fix try run
---------
Co-authored-by: Arya <aryasolhi@gmail.com>