juicedata/juicefs · warning
1. ALL objects in the data storage
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.
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
- 2. ALL entries in the metadata engine
- apply object action failed in inode
- Did you forget to specify the `--storage
- statistic
- The bucket " " 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.
Appendix: 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)