juicedata/juicefs · warning
1. ALL objects in the data storage: %s
Error message
1. ALL objects in the data storage: %s
What it means
First item of the 'juicefs destroy' destruction summary: it warns that ALL objects under the volume's data storage prefix (blob URL) will be deleted. This includes every file chunk, slice reference, and internal object written by the client.
Source
Thrown at cmd/destroy.go:154
logger.Fatalf("list sessions: %s", err)
}
if num := len(sessions); num > 0 {
ss := make([][3]string, num)
for i, s := range sessions {
ss[i] = [3]string{strconv.FormatUint(s.Sid, 10), s.HostName, s.MountPoint}
}
logger.Fatalf("%d sessions are active, please disconnect them first:\n%s", num, printSessions(ss))
}
var totalSpace, availSpace, iused, iavail uint64
_ = m.StatFS(meta.Background(), meta.RootInode, &totalSpace, &availSpace, &iused, &iavail)
fmt.Printf(" volume name: %s\n", format.Name)
fmt.Printf(" volume UUID: %s\n", format.UUID)
fmt.Printf("data storage: %s\n", blob)
fmt.Printf(" used bytes: %d\n", totalSpace-availSpace)
fmt.Printf(" used inodes: %d\n", iused)
warn("The target volume will be permanently destroyed, including:")
warn("1. ALL objects in the data storage: %s", blob)
warn("2. ALL entries in the metadata engine: %s", utils.RemovePassword(uri))
if !ctx.Bool("yes") && !userConfirmed() {
logger.Fatalln("Aborted.")
}
}
objs, err := object.ListAll(ctx.Context, blob, "", "", true, false)
if err != nil && strings.Contains(err.Error(), "NoSuchBucket") {
if !ctx.Bool("force") {
logger.Fatalf("data storage %s does not exist (error: %v); retry with \"--force\" to skip object deletion", blob, err)
}
logger.Warnf("data storage %s does not exist (error: %v); will skip object deletion", blob, err)
} else {
if err != nil {
logger.Fatalf("list all objects: %s", err)
}
progress := utils.NewProgress(false)
spin := progress.AddCountSpinner("Deleted objects")View on GitHub (pinned to c9a67b23e8)
Solutions
- Check the printed blob URL matches the intended bucket/prefix before confirming
- If other volumes share the bucket, verify prefix isolation is correct
- Cancel (answer no) and re-verify with 'juicefs status' if the storage URL looks wrong
Example fix
// before (destroying without checking blob) juicefs destroy $META $UUID --yes // after (inspect storage first) juicefs status $META | grep -i storage && juicefs destroy $META $UUID
Defensive patterns
Strategy: validation
Validate before calling
st, _ := juicefsStatus(metaURI)
if st.Storage != expectedBlobURL { abort() } // verify storage target matches Try / catch
if strings.Contains(out, "ALL objects in the data storage") && !verifiedBlob { cancel() } Prevention
- Check the printed blob URL, especially with shared buckets and prefixes
- Confirm bucket/prefix ownership before confirming destruction
- Snapshot or inventory the bucket if unsure
When it happens
Trigger: The confirmation output of 'juicefs destroy META UUID' listing the object storage bucket/prefix that will be wiped.
Common situations: Shared buckets holding multiple volumes — a careless destroy deletes objects of the destroyed volume only, but operators must confirm the listed blob path is the intended one (especially with shared buckets and prefixes).
Related errors
- apply object action failed in inode:%d key:%v: err:%s
- statistic: %v
- The target volume will be permanently destroyed, including:
- 2. ALL entries in the metadata engine: %s
- The bucket "%s" doesn't look like a file path.
AI-assisted analysis of juicedata/juicefs@c9a67b23e8 (2026-09-06).
Data as JSON: /api/errors/f9ab95a0c4131e80.
Report an issue: GitHub.