Releases: coinbase/mesh-sdk-go
Update docs to mesh, add header forwarding
Docs update
We publicly renamed Rosetta to Mesh, this release contains all the docs updates for that rename
Header Forwarding
Why
In order to support some common use cases, Mesh servers need the ability to pass request headers through to the native nodes, and to return headers from native node requests back to the caller.
Use cases:
- passing a client ID header to the nodes — this client ID shouldn't originate with the Mesh server since it may have many different callers, so it should be passed through to the native node requests
- sticky session cookies — to support sticky sessions on native nodes, AWS uses cookies. Cookies are managed by the
Cookie
andSet-Cookie
headers, which will need to be passed from the caller to the native node, and returned from the native node ALB to the caller
Solution
The HeaderForwarder
type extracts headers from Mesh requests and forwards them to native node requests. It also watches potentially many native node responses and combines those headers to add them to a Mesh response.
To accomplish this, HeaderForwarder offers three different types of injection:
- Server handler middleware — used to capture headers from the Mesh request for outgoing header forwarding, and to add native node response headers to the Mesh response
http.RoundTripper
implementation — used to add outgoing headers to HTTP requests and capture incoming response headersgrpc.UnaryClientInterceptor
implementation — used to add outgoing metadata to gRPC requests and capture incoming response metadata
A few key features:
- opt-in — users of this library can choose to use or not use this feature
- allows forwarding only specific headers
- assigns every request a unique ID, which is used to associate headers from native node responses back to Mesh request/responses
Changelog
Full changelog: v0.8.5...v0.8.7
Update docs to mesh, add header forwarder
Docs update
We publicly renamed Rosetta to Mesh, this release contains all the docs updates for that rename
Header Forwarding
Why
In order to support some common use cases, Mesh servers need the ability to pass request headers through to the native nodes, and to return headers from native node requests back to the caller.
Use cases:
- passing a client ID header to the nodes — this client ID shouldn't originate with the Mesh server since it may have many different callers, so it should be passed through to the native node requests
- sticky session cookies — to support sticky sessions on native nodes, AWS uses cookies. Cookies are managed by the
Cookie
andSet-Cookie
headers, which will need to be passed from the caller to the native node, and returned from the native node ALB to the caller
Solution
The HeaderForwarder
type extracts headers from potentially many native node requests and adds them to a Mesh response. HeaderForwarder can be injected into native node network requests as an http.RoundTripper
, and can be applied to Mesh servers as middleware
A few key features:
- opt-in — users of this library can choose to use or not use this feature
- implements
http.RoundTripper
so that it can be used to create an http.Client or other client - implements a common middleware pattern:
func(http.Handler) http.Handler
- assigns every request a unique ID (which is used to associate headers from native node responses back to Mesh request/responses)
- allows forwarding only specific headers
Changelog
Full changelog: v0.8.5...v0.8.6
Add the ability to create new generic asserter
What's Changed
- Add funcitionality to create a new generic asserter by @xiaying-peng in #503
Full Changelog: v0.8.4...v0.8.5
New Generic Rosetta Client
Add a new asserter client with ignoring rosetta spec validation.
Generic improvements
What's Changed
- make types a go module by @shrimalmadhur in #461
- Use types module instead of local dependency by @shrimalmadhur in #462
- add customized info in sdk's fetcher, reconciler, syncer and db by @jingweicb in #465
- remove getVfromK logs by @jingweicb in #467
- fix uncessary context canceled err by @jingweicb in #468
Full Changelog: v0.8.2...v0.8.3
Generic improvements
What's Changed
- Make block identifier asserter function comply with Rosetta spec by @GeekArthur in #447
- Improve error message by @GeekArthur in #450
Full Changelog: v0.8.1...v0.8.2
Refactor of error handling and badger db in-memory mode
What's Changed
- [tablesize]change the default to 2GB by @jingweicb in #438
- [types]remove two fields in preprocess request by @jingweicb in #439
- replace a comment by @jingweicb in #445
- Error handling refactor by @GeekArthur in #446
Full Changelog: v0.8.0...v0.8.1
Error Handling Optimization
What's Changed
- Bump github.com/ethereum/go-ethereum from 1.10.19 to 1.10.21 by @dependabot in #429
- change tablesize default by @jingweicb in #435
- Error handling improvement for Syncer and StatefulSyncer by @GeekArthur in #433
- Error handling improvement for asserter package by @GeekArthur in #436
- Error handling improvement for client package by @GeekArthur in #437
- Error handling improvement for constructor related packages by @GeekArthur in #440
- Error handling for fetcher and keys packages by @GeekArthur in #442
- Error handling improvement for parser and reconciler packages by @GeekArthur in #443
- Error handling improvement for storage and util packages by @GeekArthur in #444
Full Changelog: v0.7.11...v0.8.0
Update Account parser logic and library upgrades
What's Changed
- Bump github.com/ethereum/go-ethereum from 1.10.17 to 1.10.18 by @dependabot in #408
- Bump github.com/DataDog/zstd from 1.5.0 to 1.5.2 by @dependabot in #401
- [chore] update lib and go by @shrimalmadhur in #411
- Bump github.com/stretchr/testify from 1.7.0 to 1.7.2 by @dependabot in #412
- add sub account optional flag by @shrimalmadhur in #414
Full Changelog: v0.7.9...v0.7.10
upgrade to resolve ambiguous dependency issues
What's Changed
- Replace CircleCI with gh actions by @irisZhangCB in #402
- update btcd and geth to resolve ambiguous dependency by @shrimalmadhur in #405
Full Changelog: v0.7.8...v0.7.9