fix(namespace): add primary key to manifest table and fix race condition#5909
fix(namespace): add primary key to manifest table and fix race condition#5909jackye1995 wants to merge 1 commit intolance-format:mainfrom
Conversation
Code ReviewSummaryThis PR adds unenforced primary key support to the manifest table for bloom filter conflict detection during concurrent MergeInsert operations, and fixes a race condition in manifest table creation. P1 Issues
Minor Observations
|
1a5bec7 to
43d26d7
Compare
- Add unenforced primary key on `object_id` field in manifest schema to enable bloom filter conflict detection during concurrent MergeInsert operations - Fix race condition in `create_or_get_manifest` where multiple concurrent namespace instances could fail when trying to create the manifest table - Add retry logic when manifest creation fails with "already exists" error - Disable MergeInsert retry (set retry_timeout to 0) to return concurrent modification errors immediately instead of retrying - Use NamespaceError::ConcurrentModification for proper error typing - Add comprehensive tests for concurrent table operations - Move S3 integration tests to NamespaceIntegrationTest.java 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
43d26d7 to
44577cf
Compare
Summary
object_idfield in manifest schema to enable bloom filter conflict detection during concurrent MergeInsert operationscreate_or_get_manifestwhere multiple concurrent namespace instances could fail when trying to create the manifest table by adding retry logic when manifest creation fails with "already exists" errorretry_timeout = Duration::ZERO) to return concurrent modification errors immediately instead of silently retryingNamespaceError::ConcurrentModificationerror type for concurrent modification conflictsDirectoryNamespaceS3Test.javatoNamespaceIntegrationTest.javausing existing LocalStack configurationTest plan
test_manifest_schema_has_primary_keyto verify Arrow schema metadata and Lance dataset recognition of primary keytest_concurrent_create_drop_different_tablesto test concurrent table operations with single manifestNamespaceIntegrationTest.java🤖 Generated with Claude Code