juicedata/juicefs · error

listing failed, stop syncing, waiting for pending ones

Error message

listing failed, stop syncing, waiting for pending ones

What it means

Returned by the sync producer consumer loop when a nil object arrives on the keys channel — the upstream listAll goroutine pushed nil because listing failed. Sync stops enqueuing new work, waits for pending copies, and reports this aggregate failure (checkpoint preserved for resume).

Source

Thrown at pkg/sync/sync.go:1472

		}
		skip++
		skipBytes += obj.Size()
		if skip > 100 || time.Since(lastUpdate) > time.Millisecond*100 {
			lastUpdate = time.Now()
			flushProgress()
		}
	}

	sendTask := func(obj object.Object) {
		if checkpointMgr != nil {
			checkpointMgr.AddPendingKey(prefix, obj)
		}
		tasks <- obj
	}

	for obj := range srckeys {
		if obj == nil {
			return fmt.Errorf("listing failed, stop syncing, waiting for pending ones")
		}

		if !config.Dirs && obj.IsDir() && (!config.Links || !obj.IsSymlink()) {
			if checkpointMgr != nil {
				checkpointMgr.UpdateLastListedKey(prefix, obj)
			}
			logger.Debug("Ignore directory ", obj.Key())
			continue
		}

		if dstobj != nil && obj.Key() > dstobj.Key() {
			if handleExtraObject(tasks, dstobj, config, checkpointMgr, prefix) {
				return nil
			}
			dstobj = nil
		}
		if dstobj == nil {
			for dstobj = range dstkeys {

View on GitHub (pinned to c9a67b23e8)

Solutions

  1. Fix the source listing problem (credentials/network), then resume sync from the checkpoint
  2. Re-run juicefs sync; completed objects are skipped
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at pkg/sync/sync.go:1472 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of juicedata/juicefs@c9a67b23e8 (2026-09-06). Data as JSON: /api/errors/2b42a31d61fb1b7b. Report an issue: GitHub.