Skip to content

Conversation

cason
Copy link

@cason cason commented Oct 6, 2023

Addresses part of the tasks in #1419:

  • BlockService backport to v0.38.x, commits: 84e2e01, 8006a74
  • BlockResultsService backport to v0.38.x, commits: f9c17b4

Depends on #1437.

Once it #1437 merged, the destination branch should be updated to v0.38.x-experimental.


PR checklist

  • Tests written/updated
  • Changelog entry added in .changelog (we use unclog to manage our changelog)
  • Updated relevant documentation (docs/ or spec/) and code comments

thanethomson and others added 10 commits October 4, 2023 11:47
* proto: Add VersionService

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* proto: make proto-gen

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* config: Add gRPC server section

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* rpc/grpc: Add server with support for version service

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* node: Add gRPC server

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* rpc/grpc: Add client with support for version service

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* test/e2e: Add gRPC server test of version service

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* Add changelog entries

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* rpc: Fix test broken by introduction of gRPC service

Some of the RPC tests run Comet nodes in goroutines, causing port
conflicts. This randomizes the port assigned to the gRPC server,
reducing the likelihood of port conflicts.

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* rpc/grpc: Update log message format to conform to RPC log style

Signed-off-by: Thane Thomson <connect@thanethomson.com>

---------

Signed-off-by: Thane Thomson <connect@thanethomson.com>
   * With conflicts to solve

* initial logic for the gRPC block service (#1094)

* initial logic for gRPC block client and test (#1094)

* block response and request (#1094)

* add configuration for block service (#1094)

* use pointer for request parameter (#1094)

* change block service GetBlock response (#1094)

* return block information (#1094)

* convert core type to proto type (#1094)

* hookup server (#1094)

* hooking directly to the BlockStore instead of Environment (#1094)

* changing client return type, use core type (#1094)

* convert from proto to core type (#1094)

* implemented proper logic to test block service (#1094)

* return the latest height if height is 0 (#1094)

* adding proper grpc error handling and return (#1094)

* rename rpc and message in proto to match ADR-101 spec (#1094)

* renaming service and client methods structs to match ADR (#1094)

* additional error handling (#1094)

* rename get block request and response (#1094)

* update method name in the client (#1094)

* proto entries for GetLatestHeight logic (#1094)

* added logic for streaming new blocks as part of GetLatestHeight (#1094)

* ensure subcribers have their own unique id (#1094)

* client logic to use a channel parameter (#1094)

* added test for GetLatestHeight (#1094)

* better streaming test to prevent error (#1094)

* remove empty line

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* removing UNARY_RPC to prevent lint on server streaming (#1094)

* remove server reflection, doesn't work well with gogoproto (#1094)

* handle negative height parameter (#1094)

* remove `Block` from `GetBlockLatestHeight`

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* changed method name and fixes to test (#1094)

* fixes from PR feedback (#1094)

* remove vars

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* fix declaration

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* simplify error return

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* simplest error return

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* remove line

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* remove var declaration, not needed

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* use simplest error return

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* simplest error return

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* simplest error return

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* simplify error handling

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* simplified the logic for subscriber id (#1094)

* more fixs based on PR feedback (#1094)

* generated new protos (#1094)

* remove else logic to allow compilation (#1094)

* added logging capabilities to the block service and added log messages (#1094)

* ensure node is a valid testing node (#1094)

* added more conditions to handle subscription cancel (#1094)

* use break in the for loop (#1094)

* renamed ResultBlock to Block (#1094)

* refactored the client logic use a channel for errors (#1094)

* simplify subscriber name

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* adding error to log

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* update logging

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* Simplified and improved logging (#1094)

* added logic to drop the height publish if channel full (#194)

* improved test to ensure is not light or seed node (#1094)

* refactored block service to use one channel with result type (#1094)

* blockservice: Apply service name to all logs

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* blockservice: Capitalize start of all log messages

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* blockservice: Remove unnecessary logs

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* blockservice: Add trivial RPC error response tracing mechanism for easier debugging

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* blockservice: Simplify constructor

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* blockservice: Extract type assertion

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* Add changelog entries

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* docs: Update configuration-related content

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* grpc/client: Format

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* grpc: Extract function to validate or update block height from request

Signed-off-by: Thane Thomson <connect@thanethomson.com>

---------

Signed-off-by: Thane Thomson <connect@thanethomson.com>
Co-authored-by: Thane Thomson <connect@thanethomson.com>
* Add block results grpc endpoint

* Make requested changes

* Fix linting

* Lint proto

* Fix test race condition

* Update test order

* Update rpc/grpc/server/services/blockresultservice/service.go

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* Update rpc/grpc/server/services/blockresultservice/service.go

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* Update config/toml.go

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* Update rpc/grpc/server/services/blockresultservice/service.go

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* Update rpc/grpc/server/services/blockresultservice/service.go

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* Format protos

* Format upstream changes

* Test height for failing grpc call

* Test w additional logging

* Remove accidental formal

* Revert "Remove accidental formal"

This reverts commit 81cb702.

* Make additional req changes

* Requested changes for formatting/client signature

* Add changelog entry

* Add separate endpoint for latest BlockResults

* Fix linting

* Clean

* Update changelog

* Update rpc/grpc/server/services/blockresultservice/service.go

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* Update test

---------

Co-authored-by: Thane Thomson <connect@thanethomson.com>
@cason cason changed the title grpc: BlockService backport to v0.38.x-experimental grpc: BlockService and BlockResultsService backport to v0.38.x-experimental Oct 6, 2023
@cason cason mentioned this pull request Oct 6, 2023
17 tasks
@cason cason marked this pull request as ready for review October 6, 2023 10:26
@cason cason requested a review from a team as a code owner October 6, 2023 10:26
@cason cason requested review from jmalicevic and hvanz October 6, 2023 10:27
@cason cason added the grpc Anything relating to the gRPC API label Oct 6, 2023
@cason cason added this to the 2023-Q4 milestone Oct 6, 2023
@cason cason self-assigned this Oct 6, 2023
Base automatically changed from jasmina-1421-backport-pr818-version2 to v0.38.x-experimental October 10, 2023 13:23
Copy link
Author

@cason cason left a comment

Choose a reason for hiding this comment

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

Double-check after merging #1437. No relevant changes found.

Copy link
Member

@hvanz hvanz left a comment

Choose a reason for hiding this comment

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

LGTM

@jmalicevic jmalicevic merged commit 1dd50e9 into v0.38.x-experimental Oct 10, 2023
@jmalicevic jmalicevic deleted the cason/backport-pr1142-v0.38 branch October 10, 2023 20:44
lasarojc pushed a commit that referenced this pull request Nov 13, 2023
…mental (#1440)

* grpc: Add base gRPC server with version service (#818)

* proto: Add VersionService

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* proto: make proto-gen

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* config: Add gRPC server section

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* rpc/grpc: Add server with support for version service

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* node: Add gRPC server

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* rpc/grpc: Add client with support for version service

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* test/e2e: Add gRPC server test of version service

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* Add changelog entries

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* rpc: Fix test broken by introduction of gRPC service

Some of the RPC tests run Comet nodes in goroutines, causing port
conflicts. This randomizes the port assigned to the gRPC server,
reducing the likelihood of port conflicts.

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* rpc/grpc: Update log message format to conform to RPC log style

Signed-off-by: Thane Thomson <connect@thanethomson.com>

---------

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* Resolved cherry pick conflicts

* grpcs: adding legacy gRPC to e2e test suite

* grpc: added legacy gRPC ping test to e2e test suite

* grpc: fix lint check, used of deprecated method

* Add gRPC block service (#1142)

   * With conflicts to solve

* initial logic for the gRPC block service (#1094)

* initial logic for gRPC block client and test (#1094)

* block response and request (#1094)

* add configuration for block service (#1094)

* use pointer for request parameter (#1094)

* change block service GetBlock response (#1094)

* return block information (#1094)

* convert core type to proto type (#1094)

* hookup server (#1094)

* hooking directly to the BlockStore instead of Environment (#1094)

* changing client return type, use core type (#1094)

* convert from proto to core type (#1094)

* implemented proper logic to test block service (#1094)

* return the latest height if height is 0 (#1094)

* adding proper grpc error handling and return (#1094)

* rename rpc and message in proto to match ADR-101 spec (#1094)

* renaming service and client methods structs to match ADR (#1094)

* additional error handling (#1094)

* rename get block request and response (#1094)

* update method name in the client (#1094)

* proto entries for GetLatestHeight logic (#1094)

* added logic for streaming new blocks as part of GetLatestHeight (#1094)

* ensure subcribers have their own unique id (#1094)

* client logic to use a channel parameter (#1094)

* added test for GetLatestHeight (#1094)

* better streaming test to prevent error (#1094)

* remove empty line

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* removing UNARY_RPC to prevent lint on server streaming (#1094)

* remove server reflection, doesn't work well with gogoproto (#1094)

* handle negative height parameter (#1094)

* remove `Block` from `GetBlockLatestHeight`

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* changed method name and fixes to test (#1094)

* fixes from PR feedback (#1094)

* remove vars

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* fix declaration

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* simplify error return

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* simplest error return

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* remove line

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* remove var declaration, not needed

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* use simplest error return

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* simplest error return

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* simplest error return

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* simplify error handling

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* simplified the logic for subscriber id (#1094)

* more fixs based on PR feedback (#1094)

* generated new protos (#1094)

* remove else logic to allow compilation (#1094)

* added logging capabilities to the block service and added log messages (#1094)

* ensure node is a valid testing node (#1094)

* added more conditions to handle subscription cancel (#1094)

* use break in the for loop (#1094)

* renamed ResultBlock to Block (#1094)

* refactored the client logic use a channel for errors (#1094)

* simplify subscriber name

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* adding error to log

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* update logging

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* Simplified and improved logging (#1094)

* added logic to drop the height publish if channel full (#194)

* improved test to ensure is not light or seed node (#1094)

* refactored block service to use one channel with result type (#1094)

* blockservice: Apply service name to all logs

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* blockservice: Capitalize start of all log messages

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* blockservice: Remove unnecessary logs

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* blockservice: Add trivial RPC error response tracing mechanism for easier debugging

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* blockservice: Simplify constructor

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* blockservice: Extract type assertion

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* Add changelog entries

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* docs: Update configuration-related content

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* grpc/client: Format

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* grpc: Extract function to validate or update block height from request

Signed-off-by: Thane Thomson <connect@thanethomson.com>

---------

Signed-off-by: Thane Thomson <connect@thanethomson.com>
Co-authored-by: Thane Thomson <connect@thanethomson.com>

* grpc: docs conflicts, preserving most of original

* grpc: fixing conflicts, preserving both test units

* ADR 101: Add GetLatest method to block service (#1209)

* Add BlockResults gRPC service (#1168)

* Add block results grpc endpoint

* Make requested changes

* Fix linting

* Lint proto

* Fix test race condition

* Update test order

* Update rpc/grpc/server/services/blockresultservice/service.go

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* Update rpc/grpc/server/services/blockresultservice/service.go

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* Update config/toml.go

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* Update rpc/grpc/server/services/blockresultservice/service.go

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* Update rpc/grpc/server/services/blockresultservice/service.go

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* Format protos

* Format upstream changes

* Test height for failing grpc call

* Test w additional logging

* Remove accidental formal

* Revert "Remove accidental formal"

This reverts commit 81cb702.

* Make additional req changes

* Requested changes for formatting/client signature

* Add changelog entry

* Add separate endpoint for latest BlockResults

* Fix linting

* Clean

* Update changelog

* Update rpc/grpc/server/services/blockresultservice/service.go

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* Update test

---------

Co-authored-by: Thane Thomson <connect@thanethomson.com>

* Reverting changes with no effect in proto files

* Reverted the change in doc that should not be part of this PR

* fixed docs

* Apply suggestions from code review

* gprc: reverting wrong backport changes

* grpc: re-introducing this change for linter

---------

Signed-off-by: Thane Thomson <connect@thanethomson.com>
Co-authored-by: Thane Thomson <connect@thanethomson.com>
Co-authored-by: Jasmina Malicevic <jasmina.dustinac@gmail.com>
Co-authored-by: Andy Nogueira <me@andynogueira.dev>
Co-authored-by: lg <8335464+glnro@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
grpc Anything relating to the gRPC API
Projects
No open projects
Status: Done
Development

Successfully merging this pull request may close these issues.

6 participants