Skip to content

MP Core 0.9.1

Choose a tag to compare

@panahister panahister released this 28 Sep 06:16

MP Core 0.9.1

A patch version: two additions and nothing removed. It follows 0.9.0.

Both additions were asked for by running the Tiffin sample:
nine services, two tenants. ADR-014 has the decisions.

Moving from 0.9.0

Nothing to do. Every change is an addition; the API baseline of 0.9.0 accepts the packages.

Change What you will notice
UseMPCoreWolverine registers WolverineTenantMessagePublisher as IMessagePublisher A message carries the tenant of the work that published it, in the header x-tenant-id. A single-tenant host publishes as before
Every handler runs HandlerTenantMiddleware A handler that runs from a queue has the tenant of its message in ITenantContext and TenantScope.Current, and its audit records name it

New

Package What it adds
MPCore.Messaging.Wolverine The tenant of a message. WolverineTenantMessagePublisher writes it; HandlerTenantMiddleware opens it for the handler, the save included. A tenant the publisher names in MessageDeliveryContext wins over the ambient one
MPCore.Resilience.Http The identity of a service. AddMPCoreServiceIdentity puts a token on every request of a client: issued to the service itself (OAuth 2.0 client credentials), asked for once, kept until shortly before it expires, forgotten when it was refused, and never sent in cleartext. Works for REST and for gRPC clients

Documented

Package What it now says
MPCore.Persistence.Timescale AddCompression orders a hypertable's compressed chunks newest first (DESC), and the column it takes is a name alone. It always did; its documentation did not say so, and a sample took it for oldest first

Verified

What Result
MP Core's tests, 15 assemblies, against PostgreSQL, TimescaleDB and Redis 460 passed
Of them new 3 for the tenant of a message, 12 for the identity of a service
The tests of the tenant, before the change failed: the handler saw no tenant
The tests of the identity, with the code broken on purpose 4 of them failed, in two experiments
The API baseline of 0.9.0, for every package accepted: packing compares each package with its 0.9.0
The packages 30 packages and 28 symbol packages
Both template shapes, generated from the packed template and built against the packed packages service and modular monolith: 0 warnings, 0 errors
The Storefront sample's tests, against the packed packages 261 passed
The Storefront sample's scenarios, against this source, on empty databases 144 passed, 1 skipped (S21: the edge does not verify tokens in that run)
The Tiffin sample, against this source 213 tests and 266 checks of 15 scenarios passed