Chris Lu
c5e7cc94fe
Match Go ReceiveFile: prefer HardDrive location for EC and use response-level write errors
Two fixes: (1) Go prefers HardDriveType disk location for EC volumes,
falling back to first location. Returns "no storage location available"
when no locations exist. (2) Write failures are now response-level
errors (in response body) instead of gRPC status errors, matching Go.
1 week ago
Chris Lu
ecf2f2c35f
Match Go DeleteVolumeNeedle: check noWriteOrDelete before allowing delete
Go checks v.noWriteOrDelete before proceeding with needle deletion,
returning "volume is read only" if true. Rust was skipping this check.
1 week ago
Chris Lu
119192ca75
Match Go VolumeCopy: reject when no suitable disk location exists
Go returns ErrVolumeNoSpaceLeft when no location matches the disk type
and has sufficient space. Rust had an unsafe fallback that silently
picked the first location regardless of type or available space.
1 week ago
Chris Lu
8063788e13
Match Go Query: quote JSON keys in output records
Go's ToJson produces valid JSON with quoted keys like {"name":"Alice"}.
Rust was producing invalid JSON with unquoted keys like {name:"Alice"}.
1 week ago
Chris Lu
f086e4b517
Match Go ProcessRangeRequest: return full content for empty/oversized ranges
Go returns nil from ProcessRangeRequest when ranges are empty or total
range size exceeds content length, causing the caller to serve the full
content as a normal 200 response. Rust was returning an empty 200 body.
1 week ago
Chris Lu
40993383b0
Match Go VolumeDelete: propagate only_empty to delete_volume for defense in depth
The gRPC VolumeDelete handler had a pre-check for only_empty but then
passed false to store.delete_volume(), bypassing the store-level check.
Go passes req.OnlyEmpty directly to DeleteVolume. Now Rust does the same
for defense in depth against TOCTOU races (though the store write lock
makes this unlikely).
1 week ago
Chris Lu
ef3acb0b0d
Match Go SaveVolumeInfo: check writability and propagate errors in save_vif
1 week ago
Chris Lu
fb03891cc6
Fix compilation: set_read_only_persist and set_writable return ()
These methods fire-and-forget save_vif internally, so gRPC callers
should not try to chain .map_err() on the unit return type.
1 week ago
Chris Lu
8b6a4a2528
Match Go Destroy: add only_empty parameter to reject non-empty volume deletion
1 week ago
Chris Lu
58021e6279
Match Go privateStoreHandler: use proper JSON error for unsupported methods
1 week ago
Chris Lu
b5d28b6a23
Match Go chunk manifest: add Accept-Ranges, Content-Disposition, filename fallback, MIME detection
1 week ago
Chris Lu
279fc77730
Match Go ParsePath: support _delta suffix on file IDs for sub-file addressing
1 week ago
Chris Lu
10f99fdfd2
Match Go VolumeEcShardsCopy: append to .ecj file instead of truncating
1 week ago
Chris Lu
1919a2468d
add docs
1 week ago
Chris Lu
8ed77f83f0
Match Go ReceiveFile: return protocol errors in response body, not gRPC status
1 week ago
Chris Lu
57232ad786
Fix raw body POST: only parse multipart when Content-Type contains form-data
1 week ago
Chris Lu
84f2004f04
Fix EC locate_needle: use get_actual_size for full needle size
1 week ago
Chris Lu
b074239112
Match Go TTL: preserve original unit when count fits in byte
1 week ago
Chris Lu
51c5be76ec
Make 5bytes the default feature for idx entry compatibility
1 week ago
Chris Lu
b2cb8b8bcb
deps: enable webp support
1 week ago
Chris Lu
05447e4eef
handlers: align upload parsing with Go
1 week ago
Chris Lu
6e5610cfe5
handlers: align range parsing and responses with Go
1 week ago
Chris Lu
4017e8e4e9
handlers: use meta-only reads for HEAD
1 week ago
Chris Lu
11c595b6c6
Match Go WriteNeedleBlob: dedup check before writing during replication
1 week ago
Chris Lu
c285e596c1
Match Go check_volume_data_integrity: verify all 10 entries, detect trailing corruption
1 week ago
Chris Lu
7bf2595ea8
Match Go read_super_block: apply replication override from .vif
1 week ago
Chris Lu
5405179b2d
Match Go VolumeTailSender: send needle_header on every chunk
1 week ago
Chris Lu
8a5b481efb
Match Go VolumeEcShardsCopy: set ignore_source_file_not_found for .vif
1 week ago
Chris Lu
97419af55a
Match Go ScrubVolume: count total_files even on scrub error
1 week ago
Chris Lu
497c98d861
Match Go ScrubEcVolume: accumulate total_files from EC shards
1 week ago
Chris Lu
d2681c5e07
Match Go crop params: default x1/y1 to 0 when not provided
1 week ago
Chris Lu
7109dffcee
Match Go download throttle: return JSON error instead of plain text
1 week ago
Chris Lu
8fa6f7642b
Match Go error behavior for truncated needle data in read_body_v2
Go's readNeedleDataVersion2 returns "index out of range %d" errors
(indices 1-7) when needle body or metadata fields are truncated.
Rust was silently tolerating truncation and returning Ok. Now returns
NeedleError::IndexOutOfRange with the matching index for each field.
1 week ago
Chris Lu
8434429f25
Match Go TTL Display: return empty string when unit is Empty
Go checks `t.Unit == Empty` separately and returns "" for TTLs
with nonzero count but Empty unit. Rust only checked is_empty()
(count==0 && unit==0), so count>0 with unit=0 would format as
"5 " instead of "".
1 week ago
Chris Lu
9e386184d4
Match Go VolumeUnmount: idempotent success when volume not found
1 week ago
Chris Lu
58156cabea
Match Go write_needle_blob monotonic appendAtNs via get_append_at_ns
1 week ago
Chris Lu
132c963097
Match Go throttle boundary: use <= instead of <, fix pretty JSON to 1-space
1 week ago
Chris Lu
e78bd10793
Emit EC heartbeat deltas on shard changes
1 week ago
Chris Lu
03de5c0813
Report remote storage info in heartbeats
1 week ago
Chris Lu
4fcbe1c6d4
Honor master preallocate in volume max
1 week ago
Chris Lu
139b06a01d
Match Go volume heartbeat pruning
1 week ago
Chris Lu
7f0b8e7b03
Delete expired EC volumes during heartbeat
1 week ago
Chris Lu
9e9b73f571
Match Go duplicate UUID heartbeat retries
1 week ago
Chris Lu
c67fba4b9d
Match Go heartbeat metric accounting
1 week ago
Chris Lu
b3cf5ee896
Match Go gRPC: EC multi-disk placement, per-shard mount/unmount, no auto-mount on reconstruct, streaming ReadAll/EcShardRead, ReceiveFile cleanup, version check, proxy streaming, redirect Content-Type
1 week ago
Chris Lu
e861f14aa4
Add CheckVolumeDataIntegrity on volume load matching Go
1 week ago
Chris Lu
886dac6fcb
Add per-shard EC mount/unmount, location predicate search, idx directory for EC
1 week ago
Chris Lu
11b9ac8efc
Add EC volume read and delete support in HTTP handlers
1 week ago
Chris Lu
7790843f5b
Match Go gRPC: tail header first-chunk-only, EC cleanup on failure, copy append mode, ecx rebuild, compact cancellation
1 week ago
Chris Lu
0b43e548f7
Add rebuild_ecx_file for EC index reconstruction from data shards
1 week ago