Skip to content

Polecat 5.49.0

Latest

Choose a tag to compare

@jeremydmiller jeremydmiller released this 06 Nov 03:55
0876744

Polecat 5.49.0 moves to JasperFx 2.100.1 and Weasel 9.49.0, and closes two isolation and data-loss gaps around values that SQL Server's varchar columns cannot hold.

Behaviour change

A value a varchar column can't hold is now refused, not silently changed (#922). Before, a tenant id outside the database's code page (any non-ASCII tenant id on a default collation) was stored as ??. Two such tenants then collapsed into one and could read each other's documents.

  • Tenant ids: a tenant id that the varchar tenant_id column can't hold now throws TenantIdOutsideCodePageException, at the moment the tenant is named (ForTenant and session open), so nothing ever runs under the corrupted id.
  • The other varchar columns: correlation_id, DCB tag values and dotnet_type / doc_type are refused the same way, with ColumnValueOutsideCodePageException. Before, a tag query for 東京 also returned 大阪's events.
  • Unchanged: ASCII tenant ids, which covers almost every application, behave as before. Widening these columns to nvarchar is a schema change, so it waits for a major version.

Fixes

  • Released-ordinal reuse: reusing a released tenant partition ordinal no longer collides on the primary key (#922).
  • A faulted shard can't be missed: JasperFx 2.100.1's CatchUpAsync fix means a daemon catch-up can no longer report success while a shard has faulted (jasperfx#1134, #933).
  • Tombstoning a stream locks tag version rows in the append phase's order, so a tombstone can't deadlock against a concurrent append (#925).
  • Compliance: takes JasperFx 2.100's compliance additions and enrolls the suite inventory (#930).
  • Tests: the mismatched-id tests no longer assert a SQL Server defect, which made them fail on CI's servers (#933).

What's Changed

Full Changelog: v5.48.0...v5.49.0