Skip to content

Add integration test for bucketed multi-database tenancy with partitioned documents#4155

Closed
erdtsieck wants to merge 1 commit into
JasperFx:masterfrom
erdtsieck:feature/Add-bucketed-sharding-multi-tenancy-tests
Closed

Add integration test for bucketed multi-database tenancy with partitioned documents#4155
erdtsieck wants to merge 1 commit into
JasperFx:masterfrom
erdtsieck:feature/Add-bucketed-sharding-multi-tenancy-tests

Conversation

@erdtsieck

@erdtsieck erdtsieck commented Mar 1, 2026

Copy link
Copy Markdown
Contributor

This adds an integration test that demonstrates how tenants are deterministically routed to one of multiple shard databases using a stable hash and virtual buckets, while documents are further distributed across hash-based table partitions within each database.

The test verifies that:
• multiple shard databases are created and migrated
• schema changes are applied to every shard
• tenant sessions are routed to the expected database
• bulk inserts, queries, and clean operations work across shards
• document partition tables are created as expected

This provides a concrete, executable example of combining database sharding and table partitioning in Marten without relying on master-table tenancy.

…oned documents

This adds an integration test that demonstrates how tenants are deterministically routed to one of multiple shard databases using a stable hash and virtual buckets, while documents are further distributed across hash-based table partitions within each database.

The test verifies that:
• multiple shard databases are created and migrated
• schema changes are applied to every shard
• tenant sessions are routed to the expected database
• bulk inserts, queries, and clean operations work across shards
• document partition tables are created as expected

This provides a concrete, executable example of combining database sharding and table partitioning in Marten without relying on master-table tenancy.
jeremydmiller added a commit that referenced this pull request Mar 9, 2026
PR #4155: Integration tests for bucketed multi-database tenancy with
hash-based document partitioning across shard databases.

PR #4003: Test for single-tenanted documents in multi-tenancy
partitioned ancillary stores.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
jeremydmiller added a commit that referenced this pull request Mar 9, 2026
PR #4155: Integration tests for bucketed multi-database tenancy with
hash-based document partitioning across shard databases.

PR #4003: Test for single-tenanted documents in multi-tenancy
partitioned ancillary stores.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@erdtsieck erdtsieck closed this Apr 14, 2026
jeremydmiller added a commit that referenced this pull request Apr 28, 2026
Picks up the latest JasperFx + JasperFx.Events. Also bumps the
JasperFx.RuntimeCompiler pin to 4.5.0 so the transitive dep set is
consistent.

JasperFx 1.28 moved the ICodeFile codegen extension methods (notably
InitializeSynchronously) into the JasperFx.CodeGeneration namespace
(JasperFx/jasperfx#194) and marked the JasperFx.RuntimeCompiler copies
[Obsolete]. The new method requires IAssemblyGenerator to be registered
in DI (raising a descriptive InvalidOperationException otherwise) -- a
deliberate AOT-prep step. Marten currently passes a null IServiceProvider
to InitializeSynchronously at four call sites in ProviderGraph,
DocumentStore.CompiledQueryCollection, and SecondaryStoreConfig, so the
new method's runtime path would throw.

Disambiguate by fully-qualifying those four calls to the
JasperFx.RuntimeCompiler overload. The Obsolete warning code (CS0618) is
already in NoWarn at the repo root, so the explicit qualification stays
clean. Proper migration to the new method (registering IAssemblyGenerator
in Marten's DI graph) is tracked under the AOT-mode work for Marten 9.0
(issue #4309).

Effectively obsoletes PR #4003: the test additions from that PR have
already been brought into master via 8ee1d23 ("Add test reproductions
from PR #4155 and #4003"), so the only thing left is this package bump
and the runtime-compiler disambiguation. The test
use_a_single_tenanted_document_in_multi_tenancy_ancillary_store passes
against the new package set.

Closes #4003.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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