hcengineering/platform · error
delete is not implemented
Error message
delete is not implemented
What it means
The DELETE object handler in the hulylake S3-compatible server is a stub: it immediately panics with unimplemented!, signaling the operation has no implementation yet. Any DELETE request to an object path reaches this handler and aborts the request task.
Source
Thrown at foundations/hulylake/server/src/handlers.rs:515
let content_length = merge::content_length(parts);
match content_length {
Some(content_length) => response.body(SizedStream::new(
content_length as u64,
stream::empty::<Result<_, io::Error>>().boxed_local(),
)),
None => response.finish(),
}
}
}
} else {
HttpResponse::NotFound().finish()
};
Ok(response)
}
pub async fn delete(_path: Path<ObjectPath>) -> HandlerResult<HttpResponse> {
unimplemented!("delete is not implemented")
}
fn objectpart_etag(parts: &Vec<ObjectPart<PartData>>) -> Option<EntityTag> {
parts
.last()
.map(|p| EntityTag::new_strong(p.data.etag.to_owned()))
}
fn objectpart_date(parts: &Vec<ObjectPart<PartData>>) -> Option<SystemTime> {
parts.last().map(|p| p.data.date).map(|d| d.into())
}
fn objectpart_strategy(parts: &Vec<ObjectPart<PartData>>) -> Option<MergeStrategy> {
parts.first().map(|p| p.data.merge_strategy.unwrap())
}
fn objectpart_accept_ranges(parts: &Vec<ObjectPart<PartData>>) -> Option<&str> {
let strategy = objectpart_strategy(parts)?;View on GitHub (pinned to 63e28dc964)
Solutions
- Do not issue DELETE requests against hulylake until the handler is implemented
- Implement the delete handler (remove object data and metadata, return proper response)
- Use a different storage backend that supports deletion for workflows requiring it
Example fix
// before
pub async fn delete(_path: Path<ObjectPath>) -> HandlerResult<HttpResponse> {
unimplemented!("delete is not implemented")
}
// after
pub async fn delete(path: Path<ObjectPath>) -> HandlerResult<HttpResponse> {
service::delete_object(&path.object).await?;
Ok(HttpResponse::NoContent().finish())
} Defensive patterns
Strategy: fallback
Validate before calling
const res = await fetch(`${base}/${key}`, { method: 'DELETE' })
if (!res.ok && res.status >= 500) {
// hulylake delete is unimplemented; route to a backend that supports it
} Try / catch
try {
await deleteObject(path)
} catch (err) {
logger.warn('delete unsupported on hulylake, falling back', { path, err })
await fallbackStorage.delete(path)
} Prevention
- Check backend feature support matrix before issuing S3 verbs
- Keep deletion workflows behind an abstraction with per-backend capability flags
- Track upstream implementation of the delete handler and remove the workaround
When it happens
Trigger: Sending an HTTP DELETE request for an object (e.g. s3-style DeleteObject) to the hulylake server; any client (AWS SDK, mc, s3cmd) performing object deletion against this endpoint.
Common situations: Lifecycle or cleanup jobs that delete stale objects; users testing the S3 API surface of hulylake; applications assuming full S3 compatibility and issuing deletes.
Related errors
- response.statusText
- Invalid conflictStrategy. Must be "skip" or "duplicate"
- Invalid includeAttachments. Must be boolean
- Document not found
- No such storage key
AI-assisted analysis of hcengineering/platform@63e28dc964 (2026-08-29).
Data as JSON: /api/errors/a79877062212e793.
Report an issue: GitHub.