A Lioran S3 PUT is described as a staged write: the Rust engine validates the target, checks disk space and bucket quota, streams the request into a UUID-named staging file while calculating SHA-256, promotes that file into the object tree, and then writes object metadata to RocksDB. The project says it attempts to remove the promoted file if the metadata write fails. That sequence explains the intended commit path, but does not establish crash safety or a general durability guarantee.
The account below reflects the project’s description of its pre-alpha code, published October 1, 2026. It is not an independent inspection or test of the engine.
As an Amazon Associate I earn from qualifying purchases.
What “durable object” means in this write path
A successful write requires more than receiving the payload bytes. Lioran’s project walkthrough describes two related but separate pieces: the object payload stored in the filesystem and an object record stored through the metadata layer, identified in the project’s description as RocksDB. The record connects the logical bucket and key to the payload’s generated storage location.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchThe order matters: the described engine first promotes the staged payload to its final path, then persists the metadata record. The walkthrough reports cleanup if that metadata write fails, but the separate steps leave failure windows that the sequence alone cannot resolve. The project’s failure analysis discusses those limits; it is not evidence of a general crash-recovery protocol.
#1 Best Overall
How the PUT proceeds
- Validate the destination. The
LocalObjectStorepath rejects an empty bucket or key and checks bucket metadata to confirm the bucket exists. - Check capacity and quota. The engine checks host free-space guardrails separately from the bucket’s logical quota. For an overwrite, it factors in the size of the existing committed object before assessing projected usage.
- Create a staging file. It generates separate UUIDs for the object and staging file. The user’s key remains a logical namespace identifier; it is not used as the physical filename.
- Stream and hash the request. The request body is written to the staging file as it arrives, while the engine calculates a SHA-256 digest.
- Recheck after receiving the body. Once the final byte count is known, the described path checks capacity and quota again. This distinguishes a bucket’s logical allowance from available host disk space.
- Promote the payload. The engine creates the UUID-based destination path in its object layout and renames the staged file into the permanent tree.
- Persist object metadata. It writes an
ObjectMetadatarecord containing the object ID, bucket, key, relative path, size, content type, and SHA-256. - Handle a metadata-write error. If persisting metadata fails after file promotion, the implementation attempts to remove the promoted file. The article describes an attempted rollback, not proof that cleanup succeeds across every interruption or machine failure.
- Return committed metadata. When the described path completes, it returns the metadata for the committed object.
Why the key is not the file path
The bucket and key identify the object to clients, while generated UUIDs determine the physical object and staging paths. This separates the S3-style logical namespace from the engine’s storage layout: a key can identify an object without becoming a raw filesystem path. The metadata record supplies the association between the logical name and the stored payload.
Disk capacity and bucket quota are different checks
A bucket can have room under its logical quota while the host is running low on free disk. Lioran’s walkthrough describes separate checks for those constraints, including a later check after the request size is known. For an overwrite, existing committed size is accounted for so the projected bucket usage reflects replacement rather than simply adding the new object’s size to the old total.
Rank #2
What the rollback attempt does—and does not—show
The reported order is file promotion followed by metadata persistence. If the latter returns an error, the engine attempts to delete the newly promoted payload. This is useful error handling, but it should not be read as proof that a failed or interrupted PUT always leaves storage unchanged. The project’s account does not establish the outcome of every abrupt process termination, power loss, or other crash window, nor does it establish distributed durability or production readiness.
Recommended Free Tools
For comparison, AWS makes an explicit service-level statement for Amazon S3: “Amazon S3 never adds partial objects; if you receive a success response, Amazon S3 added the entire object to the bucket.” That is AWS’s contract for its service, not a guarantee established for Lioran. See AWS PutObject API reference.
Rank #3
What the timing instrumentation measures
The project lists timing categories for receiving data, writing, hashing, flushing, fsync, closing, creating directories, renaming, metadata work, and total time. These are instrumentation stages, not published latency or throughput results. The walkthrough refers to a durability mode, so its mention of fsync timing does not establish that fsync is always enabled.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




