feat: add panic tracking and logging with PanicTracker

- Implemented PanicTracker to log panics using tracing within a dedicated span.
- Introduced PanicInfo struct to capture panic details.
- Added tests for panic catching and hook restoration.

feat: implement token-bucket rate limiter

- Created RateLimiter to manage token consumption with configurable rates and burst capacity.
- Added methods for acquiring tokens and checking available tokens.
- Included tests for rate limiting behavior and token availability.

feat: add automatic retry with exponential backoff

- Developed retry function to handle transient errors with configurable retry strategies.
- Introduced RetryConfig for customizing retry behavior and jitter.
- Added tests for various retry scenarios and error handling.

feat: implement graceful shutdown coordination

- Created ShutdownManager to manage shutdown signals and task completion.
- Introduced ShutdownSignal for tasks to observe shutdown requests.
- Added tests for shutdown request handling and task draining.

feat: add timeout functionality for async operations

- Implemented with_timeout function to enforce execution time limits on futures.
- Created Timeout struct for wrapping futures with a deadline.
- Added tests for timeout behavior and error mapping.
This commit is contained in:
asepharyana
2026-08-28 21:46:18 +07:00
parent ca39dea5db
commit d119821339
76 changed files with 10360 additions and 191 deletions
+10 -2
View File
@@ -25,7 +25,15 @@ jobs:
- uses: dtolnay/rust-toolchain@stable
- name: Publish mytheclipse
run: cargo publish --allow-dirty --no-verify
# The workspace crates have no interdependencies, so publish order
# doesn't matter for crates.io dependency resolution. A brief sleep
# between publishes avoids hitting crates.io's rate limit.
- name: Publish workspace crates
run: |
for crate in mytheclipse corex-cache corex-storage corex-event corex-config corex-crypto; do
echo "Publishing $crate..."
cargo publish -p "$crate" --allow-dirty --no-verify
sleep 15
done
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}