Setup: InfluxDB 3 Enterprise (home licence), single node, object-store=file, shard-count=1. Now on 3.11.1.
What happened
On 2026-08-01 I upgraded 3.10.5 → 3.11.0 and restarted with --upgrade-pacha-tree. The migration ran for 14 minutes and stopped at status: failed.
The trigger was on my side: 14 catalog entries pointed at Parquet files that no longer existed on disk — deleted by retention months before the upgrade, i.e. a pre-existing catalog-integrity issue. Every failure reads:
External error: External: Object at location
/data/influxdb3/<node>/dbs/25/1/2026-06-11/08-50/00000000000015021636.parquet
not found: No such file or directory (os error 2)
I dropped the 11 affected tables the next day, so the original blocker is gone.
Where that left the cluster
system.upgrade_parquet, unchanged for 10 days:
| status | count |
|---|---|
| imported | 6344 |
| failed | 14 |
| not_started | 630 (2.0 GiB) |
The catalog is in hybrid ParquetAndPachaTree mode. No data loss — every table is queryable and hybrid reads across the cutover are exact. The problem is that ~21 GiB of pre-upgrade data now sits in a frozen legacy tree: retention still hides out-of-retention rows from queries, but no longer deletes the underlying files. Nothing has been written to or removed from that tree since the cutover instant, so “wait for it to expire” isn’t an option.
What I’ve tried
1. Restarting with --upgrade-pacha-tree again (3.11.1). The flag is parsed and honoured, and then:
upgrade_coordinator: Skipping enterprise upgrade coordinator.
compactor=<node> import=migration status=Failed
bulk_import_scheduler: No work remaining; waiting for new coordinators.
So a Failed import is deliberately never auto-resumed. Both state files came back byte-identical.
2. influxdb3 manage cleanup-parquet --dry-run (new in 3.11.1):
409 Conflict: catalog storage mode is ParquetAndPachaTree; cleanup requires PachaTree
Correctly gated — but unreachable, because I have no way to get to PachaTree.
3. influxdb3 import upload per file. This works well and is safe — additive, dedupes on time+tags, no duplicate rows. I used it to make one table PachaTree-native. But it runs under its own import name, so the migration ledger still reads failed and the legacy files stay on disk.
Questions
- Is there a supported way to reset or retry a bulk import stuck at
Failed, so the coordinator picks up the 630not_startedfiles? I can’t find one inserve,manageorimport, or in the docs. - Should a missing source file be skippable rather than terminal? One dangling catalog reference stopped 630 unrelated files from ever being migrated, and the
failedstatus is sticky even after the offending tables are dropped. - Is the catalog storage mode readable anywhere other than by triggering that 409? It’s the authoritative “did the migration complete” signal, but it appears in no system table.
The only documented exit I can see is manage downgrade-to-parquet, which discards everything written since the upgrade — 10 days now, and growing daily. I’d rather not.
Happy to supply the full ledger, state files or logs.
Many thanks,
Peter
