Nice, spent 30 minutes writing a post and the forum destroyed it.
So, short.
What does this mean? Failed to read required dictionary page for id: 2
Data lake created on a local directory: /var/db/dataLake1, owned by graylog:graylog
Graylog directory (journals, etc): /var/db/graylog
Data is being written to /var/db/graylog/data-lake-journal
If I try to preview data lake data, I get “Failed to read required dictionary page for id: 2’
And on the log,
2025-10-29 11:14:09,634 ERROR o.g.p.d.i.q.DataLakeNativeIcebergTableScanQueryService [query-engine-data-lake-jobs-1] Error reading data from Data Lake
java.lang.IllegalStateException: Failed to read required dictionary page for id: 2
at org.apache.iceberg.parquet.ParquetDictionaryRowGroupFilter$EvalVisitor.dict(ParquetDictionaryRowGroupFilter.java:422)
at org.apache.iceberg.parquet.ParquetDictionaryRowGroupFilter$EvalVisitor.ltEq(ParquetDictionaryRowGroupFilter.java:228)
at org.apache.iceberg.parquet.ParquetDictionaryRowGroupFilter$EvalVisitor.ltEq(ParquetDictionaryRowGroupFilter.java:81)
at org.apache.iceberg.expressions.ExpressionVisitors$BoundExpressionVisitor.predicate(ExpressionVisitors.java:156)
at org.apache.iceberg.expressions.ExpressionVisitors.visitEvaluator(ExpressionVisitors.java:390)
at org.apache.iceberg.parquet.ParquetDictionaryRowGroupFilter$EvalVisitor.eval(ParquetDictionaryRowGroupFilter.java:119)
at org.apache.iceberg.parquet.ParquetDictionaryRowGroupFilter.shouldRead(ParquetDictionaryRowGroupFilter.java:75)
at org.apache.iceberg.parquet.ReadConf.(ReadConf.java:109)
at org.apache.iceberg.parquet.ParquetReader.init(ParquetReader.java:74)
at org.apache.iceberg.parquet.ParquetReader.iterator(ParquetReader.java:94)
at org.apache.iceberg.parquet.ParquetReader.iterator(ParquetReader.java:40)
at java.base/java.lang.Iterable.spliterator(Iterable.java:101)
at com.google.common.collect.Streams.stream(Streams.java:69)
at org.graylog.plugins.datalake.iceberg.query.DataLakeNativeIcebergTableScanQueryService.icebergIterableToRows(DataLakeNativeIcebergTableScanQueryService.java:220)
at org.graylog.plugins.datalake.iceberg.query.DataLakeNativeIcebergTableScanQueryService.query(DataLakeNativeIcebergTableScanQueryService.java:174)
at org.graylog.plugins.datalake.iceberg.query.DataLakeNativeIcebergTableScanQueryService.query(DataLakeNativeIcebergTableScanQueryService.java:100)
at org.graylog.plugins.datalake.iceberg.search.DataLakeQueryBackend.lambda$executeQuery$0(DataLakeQueryBackend.java:76)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at org.graylog.plugins.datalake.iceberg.search.DataLakeQueryBackend.executeQuery(DataLakeQueryBackend.java:85)
at org.graylog.plugins.datalake.iceberg.search.DataLakeQueryBackend.doRun(DataLakeQueryBackend.java:56)
at org.graylog.plugins.datalake.iceberg.search.DataLakeQueryBackend.doRun(DataLakeQueryBackend.java:31)
at org.graylog.plugins.views.search.engine.QueryBackend.run(QueryBackend.java:94)
at org.graylog.plugins.views.search.engine.QueryEngine.prepareAndRun(QueryEngine.java:162)
at org.graylog.plugins.views.search.engine.QueryEngine.lambda$execute$5(QueryEngine.java:131)
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
2025-10-29 11:14:10,790 WARN o.g.p.d.i.i.l.MetricsSeekableInput [Finalizer] MetricsLocalSeekableInput was not closed properly!
Graylog 7.0.0.rc.2, FreeBSD 14.3, OpenJDK 21.
As a matter or fact, both /var/db/graylog and /var/db/dataLake1 are different filesystems (ZFS datasets).
Any idea? Thanks.