Cannot read WAL event file

Hi,
I’m new to QuestDB but really liking it so far.
During ingestion I’m getting an error repeatedly, although not consistently. I’m using the Python library sending a dataframe. After some number of calls (i.e. 2-5) I get an error that the WAL file does not exist.

I’m using the docker image questdb/questdb@sha256:98bb1aba063be08710b0426ec7781ba84b440822d7b531ce1ffaaefcbef6cd80 from 8/29/2025.
I’ve tried dropping/recreating the table, mapping /var/lib/questdb to an external drive, and running it with all storage in the container. Nothing seems to work long term. I get about 2-5 days of data ingested, and then the table is suspended.

I’ve appended the relevant log entries. Any help is greatly appreciated!

Kind regards,
Brian

————————-
2025-09-24T22:03:13.032341Z I i.q.c.w.WalWriter opened WAL segment [path=/ticks.NQ~42/wal1/10]
2025-09-24T22:03:13.746239Z I i.q.c.w.WalWriter commit [wal=/ticks.NQ~42/wal1/10, segTxn=0, seqTxn=44, rowLo=0, rowHi=75000, minTs=2025-08-22T15:12:48.256148Z, maxTs=2025-08-22T16:55:41.668696Z]
2025-09-24T22:03:14.193734Z I i.q.c.w.WalWriter commit [wal=/ticks.NQ~42/wal1/10, segTxn=1, seqTxn=45, rowLo=75000, rowHi=150000, minTs=2025-08-22T16:55:41.669593Z, maxTs=2025-08-22T19:13:11.570163Z]
2025-09-24T22:03:14.432371Z I i.q.c.TableWriter closed [table=ticks.NQ~42]
2025-09-24T22:03:14.432402Z I i.q.c.p.WriterPool closed [table=ticks.NQ~42, reason=DISTRESSED, by=68]
2025-09-24T22:03:14.432820Z C i.q.c.w.ApplyWal2TableJob job failed, table suspended [table=ticks.NQ~42, seqTxn=11, error=

io.questdb.cairo.CairoException: [2] cannot read WAL event file for seqTxn=11, could not open, file does not exist: /var/lib/questdb/db/ticks.NQ~42/wal1/2/_event]]
at io.questdb.cairo.CairoException.instance(CairoException.java:370)
at io.questdb.cairo.CairoException.critical(CairoException.java:73)
at io.questdb.cairo.wal.WalTxnDetails.openWalEFile(WalTxnDetails.java:138)
at io.questdb.cairo.wal.WalTxnDetails.loadTransactionDetails(WalTxnDetails.java:677)
at io.questdb.cairo.wal.WalTxnDetails.readObservableTxnMeta(WalTxnDetails.java:529)
at io.questdb.cairo.TableWriter.readWalTxnDetails(TableWriter.java:2615)
at io.questdb.cairo.wal.ApplyWal2TableJob.applyOutstandingWalTransactions(ApplyWal2TableJob.java:387)
at io.questdb.cairo.wal.ApplyWal2TableJob.applyWal(ApplyWal2TableJob.java:801)
at io.questdb.cairo.wal.ApplyWal2TableJob.doRun(ApplyWal2TableJob.java:855)
at io.questdb.mp.AbstractQueueConsumerJob.run(AbstractQueueConsumerJob.java:50)
at io.questdb.mp.Worker.run(Worker.java:152)

Hi Brian!

Thank you for your question and for the logs.

The table is suspended because the WAL applier can’t find the expected _event file for a transaction. That usually happens when the host hits open-file limits or runs out of disk space, or when multiple containers touch the same data dir.

Please check your disk space and raise the file limits if they are low.
Also ensure there’s only one QuestDB container using /var/lib/questdb.

When the table gets suspended, you can clear the suspension by following the Resume Wal steps described here.

Finally, please pin to the latest version of QuestDB as we introduce important changes in every release.
If it happens again, please share the startup lines mentioning fs.file-max / vm.max_map_count, and any OS errors from the same time.

Let us know how it goes!