Add ref_count management for deletions with atomic operations and error handling
This commit is contained in:
37
CHANGELOG.md
37
CHANGELOG.md
@@ -6,8 +6,45 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
### Added
|
||||
- Added `StorageBackend` protocol/interface for backend-agnostic storage (#33)
|
||||
- Added `health_check()` method to storage backend with `/health` endpoint integration (#33)
|
||||
- Added `verify_integrity()` method for post-upload hash validation (#33)
|
||||
- Added S3 configuration options: `s3_verify_ssl`, `s3_connect_timeout`, `s3_read_timeout`, `s3_max_retries` (#33)
|
||||
- Added `S3StorageUnavailableError` and `HashCollisionError` exception types (#33)
|
||||
- Added hash collision detection by comparing file sizes during deduplication (#33)
|
||||
- Added garbage collection endpoint `POST /api/v1/admin/garbage-collect` for orphaned artifacts (#36)
|
||||
- Added orphaned artifacts listing endpoint `GET /api/v1/admin/orphaned-artifacts` (#36)
|
||||
- Added global storage statistics endpoint `GET /api/v1/stats` (#34)
|
||||
- Added storage breakdown endpoint `GET /api/v1/stats/storage` (#34)
|
||||
- Added deduplication metrics endpoint `GET /api/v1/stats/deduplication` (#34)
|
||||
- Added per-project statistics endpoint `GET /api/v1/projects/{project}/stats` (#34)
|
||||
- Added per-package statistics endpoint `GET /api/v1/project/{project}/packages/{package}/stats` (#34)
|
||||
- Added per-artifact statistics endpoint `GET /api/v1/artifact/{id}/stats` (#34)
|
||||
- Added cross-project deduplication endpoint `GET /api/v1/stats/cross-project` (#34)
|
||||
- Added timeline statistics endpoint `GET /api/v1/stats/timeline` with daily/weekly/monthly periods (#34)
|
||||
- Added stats export endpoint `GET /api/v1/stats/export` with JSON/CSV formats (#34)
|
||||
- Added summary report endpoint `GET /api/v1/stats/report` with markdown/JSON formats (#34)
|
||||
- Added Dashboard page at `/dashboard` with storage and deduplication visualizations (#34)
|
||||
- Added pytest infrastructure with mock S3 client for unit testing (#35)
|
||||
- Added unit tests for SHA256 hash calculation (#35)
|
||||
- Added unit tests for duplicate detection and deduplication behavior (#35)
|
||||
- Added integration tests for upload scenarios and ref_count management (#35)
|
||||
- Added integration tests for S3 verification and failure cleanup (#35)
|
||||
- Added integration tests for all stats endpoints (#35)
|
||||
- Added integration tests for cascade deletion ref_count behavior (package/project delete) (#35)
|
||||
- Added integration tests for tag update ref_count adjustments (#35)
|
||||
- Added integration tests for garbage collection endpoints (#35)
|
||||
- Added integration tests for file size validation (#35)
|
||||
- Added test dependencies to requirements.txt (pytest, pytest-asyncio, pytest-cov, httpx, moto) (#35)
|
||||
- Added `ORCHARD_MAX_FILE_SIZE` config option (default: 10GB) for upload size limits (#37)
|
||||
- Added `ORCHARD_MIN_FILE_SIZE` config option (default: 1 byte, rejects empty files) (#37)
|
||||
- Added file size validation to upload and resumable upload endpoints (#37)
|
||||
- Added comprehensive deduplication design document (`docs/design/deduplication-design.md`) (#37)
|
||||
### Fixed
|
||||
- Fixed Helm chart `minio.ingress` conflicting with Bitnami MinIO subchart by renaming to `minioIngress` (#48)
|
||||
- Fixed JSON report serialization error for Decimal types in `GET /api/v1/stats/report` (#34)
|
||||
- Fixed resumable upload double-counting ref_count when tag provided (removed manual increment, SQL triggers handle it) (#35)
|
||||
|
||||
## [0.3.0] - 2025-12-15
|
||||
### Changed
|
||||
|
||||
Reference in New Issue
Block a user