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 |