2767e7e79d
Optimize bucket listing for 10K-100K objects
...
- Shallow listing: read per-directory _index.json once for eTags instead
of N serial .meta.json reads. Validate prefix for path traversal and
verify normalized target stays within bucket root.
- Recursive listing: cache full per-directory index during the walk so
each _index.json is parsed at most once per call.
- Per-bucket listing cache with 5s TTL and per-bucket rebuild mutex.
Invalidated on put/delete/copy/metadata/tags/multipart-complete.
Pagination uses partition_point for O(log n) start lookup.
- UI stream endpoint now actually streams via mpsc + Body::from_stream
instead of buffering into a Vec<String>. Cancels producer on client
disconnect.
- UI JSON endpoint honors delimiter=/ and returns common_prefixes.
- run_blocking wrapper dispatches sync filesystem work via
block_in_place on multi-threaded runtimes, falls back to inline on
current-thread runtimes (unit tests).
2026-04-22 19:55:44 +08:00
217af6d1c6
Full migration and transition to Rust; Remove python artifacts
2026-04-22 17:19:19 +08:00
51d54b42ac
Rust fixes
2026-04-22 15:41:18 +08:00
9ec5797919
Applied max-keys to combined current + archived ListObjectVersions output and reports truncation
2026-04-22 00:12:22 +08:00
8935188c8f
Update static website 404 page
2026-04-21 21:26:50 +08:00
c77c592832
Update static website to include proper error handling; add missing features
2026-04-21 20:54:00 +08:00
501d563df2
Add missing features - notifcations, object lock, acl
2026-04-21 00:27:50 +08:00
ddcdb4026c
Fix domains mapping missing
2026-04-20 22:02:05 +08:00
3e7c0af019
Fix dockerfile issue
2026-04-20 21:39:06 +08:00
476b9bd2e4
First porting of Python to Rust - update docs and bug fixes
2026-04-20 21:27:02 +08:00
c2ef37b84e
Separate Python and Rust into python/ and rust/ with per-stack Dockerfiles
2026-04-19 14:01:05 +08:00
be8e030940
Migrate more Python functions to Rust
2026-04-19 13:53:55 +08:00
ad7b2a02cb
Add missing endpoints for Rust S3 API
2026-04-05 15:22:24 +08:00
72ddd9822c
Add docker support for rust integration
2026-04-03 12:31:11 +08:00
4c30efd802
Update myfsio rust engines - added more implementations
2026-04-02 21:57:16 +08:00
926a7e6366
Add Rust storage engine foundation
2026-04-02 17:00:58 +08:00
1eadc7b75c
Fix more-actions dropdown positioning: use Popper fixed strategy instead of raw CSS position:fixed
2026-04-01 16:24:42 +08:00
4a224a127b
Fix more-actions dropdown triggering row selection on object list
2026-04-01 16:17:29 +08:00
c498fe7aee
Add self-heal missing ETags and harden ETag index persistence
2026-03-31 21:10:47 +08:00
3838aed954
Fix presigned URL security vulnerabilities: enforce key/user status in SigV4 paths, remove duplicate verification, remove X-Forwarded-Host trust
2026-03-31 20:27:18 +08:00
6a193dbb1c
Add --version option for run.py
2026-03-31 17:21:33 +08:00
e94b341a5b
Add robust myfsio_core staleness detection with Python fallback; document Rust extension build in README
2026-03-31 17:13:05 +08:00
2ad3736852
Add intra-bucket cursor tracking to integrity scanner for progressive full coverage; Optimize integrity scanner: early batch exit, lazy sorted walk, cursor-aware index reads
2026-03-31 17:04:28 +08:00
f05b2668c0
Reduce per-request overhead: pre-compile SigV4 regex, in-memory etag index cache, 1MB GET chunks, configurable meta cache, skip fsync for rebuildable caches
2026-03-25 13:44:34 +08:00
f7c1c1f809
Update requirements.txt
2026-03-25 13:26:42 +08:00
0e392e18b4
Hide ghost details in object panel when preview fails to load
2026-03-24 15:15:03 +08:00
8996f1ce06
Fix folder selection not showing delete button in bucket browser
2026-03-24 12:10:38 +08:00
f60dbaf9c9
Respect DISPLAY_TIMEZONE in GC and integrity scanner history tables
2026-03-23 18:36:13 +08:00
1a5a7aa9e1
Auto-refresh Recent Scans/Executions tables after GC and integrity scan completion
2026-03-23 18:31:13 +08:00
326367ae4c
Fix integrity scanner batch limit and add cursor-based rotation
2026-03-23 17:46:27 +08:00
a7f9b0a22f
Convert GC to async with polling to prevent proxy timeouts
2026-03-23 17:14:04 +08:00
0e525713b1
Fix missing CSRF token on presigned URL request
2026-03-23 16:48:25 +08:00
f43fad02fb
Replace fetch with XHR for multipart upload progress and add retry logic
2026-03-23 16:27:28 +08:00
eff3e378f3
Fix mobile infinite scroll on object list and ghost preview on fast object swap
2026-03-23 11:55:46 +08:00
5e32cef792
Add I/O throttling to GC and integrity scanner to prevent HDD starvation
2026-03-23 11:36:38 +08:00
9898167f8d
Make integrity scan async with progress indicator in UI
2026-03-22 14:17:43 +08:00
4a553555d3
Clean up debug code
2026-03-22 11:38:29 +08:00
7a3202c996
Possible fix for the issue
2026-03-22 11:27:52 +08:00
bd20ca86ab
Further debugging on s3 api issues on Granian
2026-03-22 11:22:24 +08:00
532cf95d59
Debug s3 api issues on Granian
2026-03-22 11:14:32 +08:00
366f8ce60d
the middleware now also triggers when Content-Length is '0' but X-Amz-Decoded-Content-Length or aws-chunked headers indicate a body should be present
2026-03-22 00:24:04 +08:00
7612cb054a
further fixes
2026-03-22 00:16:30 +08:00
966d524dca
Fix 0-byte uploads caused by Granian stripping Expect header and missing CONTENT_LENGTH for chunked transfers
2026-03-22 00:04:55 +08:00
e84f1f1851
Fix SigV4 SignatureDoesNotMatch when Expect header is stripped by WSGI server
2026-03-21 23:48:19 +08:00
a059f0502d
Fix 0-byte uploads caused by Granian default buffer size; Add SERVER_MAX_BUFFER_SIZE config
2026-03-21 22:57:48 +08:00
afd7173ba0
Fix buttons all showing Running state when only one action is triggered
2026-03-21 14:51:43 +08:00
c807bb2388
Update install/uninstall scripts for encrypted IAM config
2026-03-20 17:51:00 +08:00
aa4f9f5566
Bypass boto3 proxy for object streaming, read directly from storage layer; Add streaming object iterator to eliminate O(n²) directory rescanning on large buckets; Add iter_objects_shallow delegation to EncryptedObjectStorage
2026-03-20 17:35:10 +08:00
14786151e5
Fix selected object losing highlight on scroll in virtual list
2026-03-20 12:10:26 +08:00
a496862902
Fix stale object count on dashboard after deleting all objects in bucket
2026-03-17 23:25:30 +08:00