bug: TableMetadataBuilder::RemoveSchemas leaves removed ids in the schema index
Maintainer antworten meist innerhalb von 2 Tagen
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 72/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- cpp
- Bereich
- data-engineering
Rechercherichtung
Beginne in der Implementierung von TableMetadataBuilder::Impl::RemoveSchemas, wo metadata_.schemas gefiltert wird, schemas_by_id_ aber nicht. Prüfe, wie SetCurrentSchema, AddSchema und die Prüfung des aktuellen Schemas in Build() diesen Index verwenden. Fertig ist, wenn nach RemoveSchemas({1}) der Aufruf SetCurrentSchema(1) fehlschlägt und AddSchema mit demselben Schema es wieder hinzufügt, mit einem Test, der beide Fälle abdeckt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Summary
TableMetadataBuilder::Impl::RemoveSchemas filters metadata_.schemas but never touches schemas_by_id_. Within the same builder the removed ids stay resolvable, so Build() can produce metadata whose current-schema-id points at a schema that is no longer in schemas.
Root cause
SetCurrentSchema checks the id against schemas_by_id_, and the current-schema check in Build() uses the same index. Both still find the removed schema, so:
RemoveSchemas({1})followed bySetCurrentSchema(1)succeeds, andBuild()returns metadata withcurrent-schema-id: 1whileschemasno longer contains schema 1.RemoveSchemas({1})followed byAddSchemaof the same schema finds it through the stale index and skips re-adding it toschemas.
Impact
InMemoryCatalog::CommitTable and SqlCatalog::CommitTable apply the caller's update list on one builder, then Build() and write the result. A commit carrying [remove-schemas, set-current-schema] for the same id is enough to write that metadata file, and reading it back fails with Cannot find schema with current-schema-id=..., so the table can no longer be loaded.
Java's Builder.removeSchemas does not update schemasById either, so this is stricter than Java's builder.
Proposed fix
Erase the removed ids from schemas_by_id_ alongside the existing filter of metadata_.schemas.
Out of scope
RemovePartitionSpecs has the same gap with specs_by_id_. Follow-up.
- Vorherrschende Sprache
- C++
- Sterne
- 226
- Forks
- 133
- Ø Merge
- 6 T. 5 Std.
- Gemergte PRs (30 T.)
- 40
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
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 apache/iceberg-cpp
-
bug: manifest Avro headers use the wrong partition-spec shape and omit schema-idEvtl. vergeben @mavam hat das vor 1 Tag übernommen. Offen
Schwierigkeit 4/5 1-2 Tage Anfängerfreundlichkeit 58/100
apache/iceberg-cpp#1016 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
bug: gzip table metadata is neither written nor detected as gzipEvtl. vergeben @LuciferYang hat das vor 1 Tag übernommen. Offen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 66/100
apache/iceberg-cpp#1013 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
apache/iceberg-cpp#1000 · 2 Kommentare · 1 Reaktion ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Support Iceberg table encryption (Java-compatible)Evtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offen
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 8/100
apache/iceberg-cpp#988 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 20/100
apache/iceberg-cpp#959 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 2 Tagen
Alle Issues in apache/iceberg-cpp
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
FriendsofECCE/ECCE#336 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
bitcoin-core/gui-qml#1030 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
tesseract-robotics/tesseract#1384 ·
-
Fix the silent drop of oversized clusters in the plain EuclideanClusterObjectDetectorEvtl. vergeben @xmfcx hat das heute übernommen. Offencomponent:perception type:bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
autowarefoundation/autoware_core#1497 ·
Maintainer antworten meist innerhalb von 2 Tagen