Writer: vortex.onpair throws on a string chunk past 2 GB instead of stepping aside
Maintainer antworten meist innerhalb von 1 Tag
Ein zugehöriger Pull Request wurde bereits gemerged.
- #656 von @dfa1 — gemerged
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- Ein halber Tag
- Anfängerfreundlichkeit
- 42/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- java
- Bereich
- data-engineering
Rechercherichtung
Start in OnPairEncodingEncoder.java: the Encoder.rows method near line 152 throws when a chunk's row bytes exceed 2 GB, and encodeCascade around line 86 calls it. The fix is for the encoder to return CascadeStep.notApplicable() so CascadingCompressor.encodeChoice (line 326) lets the other string encodings win. Done when a forced vortex.onpair import of a >2 GB chunk falls back instead of throwing, verified by a case in LargeChunkInteropIntegrationTest under the large tag.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
A default (non-compact) Parquet import of Raincloud's websight-v01 (29 GB Parquet, 822,987 rows of HTML) fails after the first chunk:
UnsupportedOperationException: vortex.onpair: chunk exceeds 2 GB of row bytes
at io.github.dfa1.vortex.writer.encode.OnPairEncodingEncoder$Encoder.rows(OnPairEncodingEncoder.java:152)
at io.github.dfa1.vortex.writer.encode.OnPairEncodingEncoder.encodeCascade(OnPairEncodingEncoder.java:86)
at io.github.dfa1.vortex.writer.encode.CascadingCompressor.spliceResult(CascadingCompressor.java:478)
at io.github.dfa1.vortex.writer.encode.CascadingCompressor.encodeChoice(CascadingCompressor.java:326)
OnPairEncodingEncoder lays a chunk's rows out contiguously (VarBinBytes.toContiguous) and throws when they don't fit one byte[]. Since #633 every other string encoding (varbin, varbinview, fsst, zstd) handles a chunk past 2 GiB, so an encoder that cannot should decline (CascadeStep.notApplicable()) and let those win, rather than abort the write. The compact import of the same file (which doesn't offer onpair) succeeds, and the file passes conformance.
open-food-facts (15 GB Parquet) failed its default import at the same step; its log was overwritten, so the cause is unconfirmed but likely the same.
Check against Rust: whether its onpair scheme bounds its input size or declines large arrays.
A cross-check belongs in LargeChunkInteropIntegrationTest (large tag): force vortex.onpair alongside the others, expecting a fallback rather than an exception.
- Vorherrschende Sprache
- Java
- Sterne
- 3
- Forks
- 2
- Ø Merge
- 9 Std. 51 Min.
- Gemergte PRs (30 T.)
- 127
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus dfa1/vortex-java
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
dfa1/vortex-java#636 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
dfa1/vortex-java#657 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 70/100
dfa1/vortex-java#655 ·
Maintainer antworten meist innerhalb von 1 Tag
-
perf
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 30/100
dfa1/vortex-java#651 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Writer: string columns written as per-chunk dicts where Rust uses its dict layout (up to 2x larger)Offenperf
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 30/100
dfa1/vortex-java#650 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in dfa1/vortex-java
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
micronaut-projects/micronaut-redis#844 ·
Maintainer antworten meist innerhalb von 4 Tagen
-
ai-driven-fuzzing bug claude Major
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
linagora/tmail-backend#2862 ·
Maintainer antworten meist innerhalb von 1 Tag
-
ai-driven-fuzzing bug claude Minor
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
linagora/twake-calendar-side-service#1435 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Poetry updater rejects OR (||) Python constraints in PyprojectPreparer#update_python_requirementOffenL: python L: ruby:bundler
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
dependabot/dependabot-core#16819 ·
Maintainer antworten meist innerhalb von 1 Tag
-
[Bug] Auto-trusted serialization allow list skips array component classesEvtl. vergeben @Icesource hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag