Some Improvements + Fix Data Race #4
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Create a dedicated
Makefilefor backend project.Improve
README.md- Add a name for the Docker container and mount a volume for the DuckDB database.
- Fix MD lint problems (MD029)
During the addition of dedicated make targets for backend, a data race was detected when running tests with the race detector (
go test -race). The race occurred in the batch log storage mechanism, specifically between:StoreLog()ProcessBatchStoreLogs()The race condition was caused by unsafe concurrent access to the shared
batchLogsslice. Here's the problematic sequence:Between
StoreLog()unlocking the mutex andProcessBatchStoreLogs()re-locking it, other goroutines could:batchLogs(write)batchLogsin tests or other operationsThis created a classic data race where multiple goroutines accessed shared memory without proper synchronization.
Solution
1. Modified
StoreLog()Key changes:
batchLogsto a local variableentrieswhile holding the mutexbatchLogsimmediately (still under mutex protection)batchLogscan be accessed unsafely2. Refactored
ProcessBatchStoreLogs()3. New Helper Function
Purpose:
Benefits
batchLogswithout mutex protection