Skip to content

Commit 11c18a4

Browse files
committed
feat(parquet): voids_id column for tombstone round-trip
Tombstone events lost VoidsID through the parquet layer, breaking read-side attestation voiding. Optional column; old files read fine.
1 parent 5e9142e commit 11c18a4

4 files changed

Lines changed: 19 additions & 0 deletions

File tree

parquet/decoder.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ func convertRow(row *ParquetRow) (cloudevent.StoredEvent, error) {
134134
CloudEventHeader: header,
135135
},
136136
DataIndexKey: row.DataIndexKey,
137+
VoidsID: row.VoidsID,
137138
}
138139

139140
if len(row.DataBase64) > 0 {

parquet/encoder.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ func convertEvent(event *cloudevent.StoredEvent) (ParquetRow, error) {
204204
Producer: event.Producer,
205205
Extras: string(extrasJSON),
206206
DataIndexKey: event.DataIndexKey,
207+
VoidsID: event.VoidsID,
207208
}
208209

209210
if event.DataBase64 != "" {

parquet/parquet_row.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,5 @@ type ParquetRow struct {
1515
Data *string `parquet:"data,optional"`
1616
DataBase64 []byte `parquet:"data_base64,optional"`
1717
DataIndexKey string `parquet:"data_index_key,optional"`
18+
VoidsID string `parquet:"voids_id,optional"`
1819
}

parquet/parquet_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -822,3 +822,19 @@ func TestEncode_AllNewOptionsCombined(t *testing.T) {
822822
assert.Equal(t, "e-1", got[0].ID)
823823
assert.Equal(t, "e-2", got[1].ID)
824824
}
825+
826+
func TestDecode_VoidsIDRoundTrip(t *testing.T) {
827+
t.Parallel()
828+
ev := cloudevent.StoredEvent{
829+
RawEvent: makeEvent("evt-tomb", json.RawMessage(`{"reason":"superseded"}`)),
830+
VoidsID: "evt-voided",
831+
}
832+
var buf bytes.Buffer
833+
_, err := Encode(&buf, []cloudevent.StoredEvent{ev}, "key")
834+
require.NoError(t, err)
835+
836+
events, err := Decode(bytes.NewReader(buf.Bytes()), int64(buf.Len()))
837+
require.NoError(t, err)
838+
require.Len(t, events, 1)
839+
assert.Equal(t, "evt-voided", events[0].VoidsID)
840+
}

0 commit comments

Comments
 (0)