Skip to content

Add sharded multi-tenancy abstractions#231

Merged
jeremydmiller merged 2 commits intomasterfrom
feature/sharded-tenancy
Mar 27, 2026
Merged

Add sharded multi-tenancy abstractions#231
jeremydmiller merged 2 commits intomasterfrom
feature/sharded-tenancy

Conversation

@jeremydmiller
Copy link
Copy Markdown
Member

Summary

  • New interfaces in Weasel.Core.MultiTenancy: ITenantDatabasePool, ITenantAssignmentStrategy, IDatabaseSizingStrategy, PooledDatabase
  • Three built-in assignment strategies: HashTenantAssignment (FNV-1a), SmallestTenantAssignment, ExplicitTenantAssignment
  • New PostgreSQL table definitions: DatabasePoolTable (mt_database_pool), TenantAssignmentTable (mt_tenant_assignments)

These abstractions enable Marten's new ShardedTenancy (JasperFx/marten feature/sharded-tenancy) and allow Wolverine/CritterWatch to manage tenants without depending on Marten directly.

Test plan

  • Weasel.Core and Weasel.Postgresql compile cleanly
  • Consumed by Marten's ShardedTenancy with 12/12 integration tests passing

🤖 Generated with Claude Code

jeremydmiller and others added 2 commits March 27, 2026 08:46
New interfaces in Weasel.Core.MultiTenancy:
- ITenantDatabasePool: pool management (add/remove databases, assign tenants)
- ITenantAssignmentStrategy: pluggable tenant-to-database assignment
- IDatabaseSizingStrategy: pluggable "smallest database" determination
- PooledDatabase: record for pool state

Three built-in strategies:
- HashTenantAssignment: FNV-1a hash % N for deterministic assignment
- SmallestTenantAssignment: pick database with lowest tenant count
- ExplicitTenantAssignment: throws for unrecognized tenants

New PostgreSQL table definitions:
- DatabasePoolTable (mt_database_pool): database registry with capacity
- TenantAssignmentTable (mt_tenant_assignments): tenant→database mapping

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@jeremydmiller jeremydmiller merged commit aa24084 into master Mar 27, 2026
21 checks passed
@jeremydmiller jeremydmiller deleted the feature/sharded-tenancy branch March 27, 2026 15:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant