redb 4.4.1 #19
reliktbk
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
redb 4.4.1
redb 4.4.1 is out across all four products: 77 packages on nuget.org, both template packs, the Tsak and Identity images in GHCR and the GitHub Releases of every repository. It carries everything that was built for 4.4.0, plus one fix.
4.4.0 was withdrawn on the day it came out. In redb.Route from 4.2.2 on, stopping and starting the same route context closed its
seda:queues for good: the routes reported Started while every send behind a seda hop failed withChannelClosedException. On redb.Tsak that is/stopthen/start,/restartand the watchdog's automatic restart. 4.4.1 opens a new queue when a consumer starts again. The 4.4.0 packages are unlisted, its images and Releases are removed. If you run 4.2.2 to 4.3.0 and cannot upgrade yet, recreate a context instead of restarting it (on Tsak: stop it and touch its.tpkg).redb, Tsak and Identity have no changes of their own in 4.4.1; they move to the same number so that one version installs together.
Before you upgrade
redb.Postgres: Npgsql 10. A failed batch command no longer carries its SQL into the exception,
Root Certificateno longer falls back to the system store, and an untyped read ofdateortimereturnsDateOnly/TimeOnly. The redb API is unaffected; code that uses Npgsql directly may be. redb.Route.Sql on PostgreSQL gets the same driver.PostgreSQL Pro: empty values sort where LINQ, SQL Server and SQLite put them: first under
OrderBy, last underOrderByDescending.The first start builds indexes. PostgreSQL, SQL Server and SQLite get value-leading indexes, and SQLite a new index on text values (schema 12). An existing database builds them on its first start with 4.4, and writes to
_valueswait meanwhile; on a large database plan a quiet window.UPGRADING.mdhas the details.redb.Route. HTTP
bridgeHeadersandcopyResponseHeadersbecome Apache Camel'sskipRequestHeadersandskipResponseHeaders, with the meaning reversed, and an old name now fails the endpoint.RegisterServerConfiguratoris replaced byRegisterEndpoints. A RabbitMQ consumer with an empty queue name anddeclare=falsefails at start. An Elasticsearch delete of a missing document succeeds withNotFound. FTPS refuses a data channel with a different, untrusted certificate. FCM topic subscriptions go through the v1 API. FluentValidation 12 and Quartz 3.22 (a clustered job store needs three new column sets).redb.Tsak: a second live worker with the same node id is refused at start. Give each worker its own id.
redb.Identity: OpenIddict 7.
resource(RFC 8707) is validated, JWT client assertions must follow draft-ietf-oauth-rfc7523bis (typclient-authentication+jwt, the issuer asaud), and a third-party resource server on OpenIddict.Validation 7 cannot check Identity's DPoP-bound tokens by itself. The DataProtection key ring now lives in redb; the first start imports the old file ring once.Each item has a section in the
UPGRADING.mdof its repository.Security
SignalR broadcasts stay on their own hub path.
Clients.All,GroupandUserof one hub reached the clients of every hub on the same listener, and through a Redis backplane every hub on that Redis.Identity: token exchange (RFC 8693) checks who calls it. A token bound to one client can no longer be exchanged by another, and a token of a disabled or deleted user is rejected.
redb.Route:
jpathruns on JsonPath.Net 2.2.0 (MIT). The 3.x releases of JsonPath.Net and Json.More.Net that 4.0.0 to 4.3.0 used are published under a fee-based EULA for revenue-generating users, so commercial users are advised to upgrade.redb
Pro queries read the index of the narrow condition. Counts, existence and null checks, aggregates, groupings and pages with
Takenarrowed by a Props value no longer read every object of the scheme. A page sorted by one Props field walks that field's index,ThenByreads only the run of equal first keys it needs, and an open range that is narrow by the data starts the streams. On 689 thousand points pages went from seconds to 10 to 40 ms; on 100 000 employees most measured queries run two to five times faster.Projections sort in the database.
Select(...).OrderBy(...).Take(10)runs asOrderBy(...).Take(10).Select(...)when the key is a projected member, and a projection getsThenBy.Modules that unload. redb releases the Props types of a module in a collectible load context on unload, and
IRedbSaveInterceptorRegistrylets such a module subscribe save interceptors at run time.Flat export hands out keys from one sequence, deletes in cascade and indexes every foreign key. PostgreSQL connections run with JIT off. Drivers: Npgsql 10.0.3, Microsoft.Data.SqlClient 7.1.1, Microsoft.Data.Sqlite 10.0.13.
redb CLI as a standalone executable
The
redbCLI now ships as one self-contained file for win-x64, linux-x64 and linux-arm64, so a machine without .NET can run it. The archives are in the v4.4.1 release of redbase-app/redb, each with a cosign bundle. Check an archive withcosign verify-blob --key cosign.pub --bundle <archive>.bundle <archive>, or compare its SHA-256 withchecksums.txt. The .NET tool stays:dotnet tool install -g redb.CLI. The README of the CLI has the steps.redb.Route
A header filter strategy, as Apache Camel's
HeaderFilterStrategy, for HTTP, Kafka, RabbitMQ, AMQP, Azure Service Bus, IBM MQ, gRPC, SQS/SNS and AS2. A Redis backplane for SignalR hubs, the new packageredb.Route.SignalR.StackExchangeRedis.Rabbit.Exchange(name, type)builds an endpoint without a queue. Context-scoped${prefix.}resolvers. The VS Code extension 0.2.22 offers the beans of the document after#.redb.Tsak
Contexts start in the order their packages declare, a module's redb schemes are cached before it starts, the type names of a module's routes resolve to its own classes first, and
HotReload:Collectible=truereleases an unloaded module. The worker adds the newer Quartz columns to a clustered job store itself.redb.Identity
OpenIddict 7.7, sessions that survive a recreated container, the key ring in redb, and a
redb-identity-webimage that runs as a non-root user.The full lists are in the
CHANGELOG.mdof each repository.All reactions