Skip to content

Releases: coinbase/mesh-sdk-go

Concurrency-safe header forwarding

27 Nov 22:53
06d0fe9
Compare
Choose a tag to compare
  • HeaderForwarder is now thread-safe
  • added unit tests for headerforwarder package

Fix: Block Asserter without genesis block

25 Nov 21:07
945092d
Compare
Choose a tag to compare

Block asserter will now work without being passed a genesis block identifier. Previously this was causing a nil pointer exception.

Update docs to mesh, add header forwarding

08 Nov 21:03
dab4a57
Compare
Choose a tag to compare

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 and Set-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 headers
  • grpc.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

Add the ability to create new generic asserter

10 Apr 21:07
14fc343
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.8.4...v0.8.5

New Generic Rosetta Client

21 Feb 19:46
fa62d03
Compare
Choose a tag to compare

Add a new asserter client with ignoring rosetta spec validation.

Generic improvements

01 Feb 18:54
294474a
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.8.2...v0.8.3

Generic improvements

02 Dec 20:35
255864d
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.8.1...v0.8.2

Refactor of error handling and badger db in-memory mode

20 Sep 21:06
1cc6016
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.8.0...v0.8.1

Error Handling Optimization

09 Sep 15:56
7712c7d
Compare
Choose a tag to compare

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

08 Jun 20:52
e2d4265
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.7.9...v0.7.10