juicedata/juicefs · error

only %d records inserted

Error message

only %d records inserted

What it means

Returned by LoadMeta's insert helper when a batch insert reports fewer inserted rows than the number of beans submitted without an SQL error. It detects silent partial inserts, which would leave the loaded metadata incomplete.

Source

Thrown at pkg/meta/sql.go:5257

		return err
	}
	if err := m.syncAllTables(); err != nil {
		return err
	}

	batch := m.getTxnBatchNum()
	chs := make([]chan interface{}, 6) // node, edge, chunk, chunkRef, xattr, others
	insert := func(index int, beans []interface{}) error {
		return m.txn(func(s *xorm.Session) error {
			var n int64
			var err error
			if index == len(chs)-1 { // multiple tables
				n, err = s.Insert(beans...)
			} else { // one table only
				n, err = s.Insert(beans)
			}
			if err == nil && int(n) != len(beans) {
				err = fmt.Errorf("only %d records inserted", n)
			}
			return err
		})
	}
	var wg sync.WaitGroup
	for i := range chs {
		chs[i] = make(chan interface{}, batch*2)
		wg.Add(1)
		go func(i int) {
			defer wg.Done()
			buffer := make([]interface{}, 0, batch)
			for bean := range chs[i] {
				buffer = append(buffer, bean)
				if len(buffer) >= batch {
					if err := insert(i, buffer); err != nil {
						logger.Fatalf("Write %d beans in channel %d: %s", len(buffer), i, err)
					}
					buffer = buffer[:0]

View on GitHub (pinned to c9a67b23e8)

Solutions

  1. Retry the load into a clean empty database
  2. Check DB logs for trigger/timeout behavior causing partial inserts
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at pkg/meta/sql.go:5257 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/a1c8ef26ffa5c3ca. Report an issue: GitHub.