fresh-borzoni opened a new pull request, #145:
URL: https://github.com/apache/fluss-rust/pull/145
### Purpose
Linked issue: close #135
Fix critical bug where DashMap shard lock was held across `.await` points
in the record accumulator, which could cause deadlocks via lock inversion and
make futures `!Send`.
### Brief change log
- Changed `batches` field type in `BucketAndWriteBatches` from
`HashMap<BucketId, Mutex<VecDeque<WriteBatch>>>` to `HashMap<BucketId,
Arc<Mutex<VecDeque<WriteBatch>>>>>`
- Updated `append()`, `re_enqueue()`, `drain_batches_for_one_node()`, and
`bucket_ready()` methods to clone the `Arc` before awaiting, ensuring DashMap
locks are dropped before async suspension points
- Fixed unrelated test compilation error in `datum.rs`
### Tests
- Existing test `re_enqueue_increments_attempts` passes
- All accumulator unit tests pass
- Full build and clippy pass with no warnings
### API and Format
No API or storage format changes.
### Documentation
No new features introduced - this is a bug fix.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]