Skip to content

Commit d6243b6

Browse files
committed
Fix delete events missing key value
1 parent 93c7e1c commit d6243b6

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

internal/data/events.go

+11-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"bytes"
55
"context"
66
"encoding/json"
7+
"fmt"
78
"log"
89
"sync"
910
"time"
@@ -165,7 +166,16 @@ func watchEvents() {
165166

166167
func makeBasicEvent[T any](event *clientv3.Event) (BasicEvent[T], error) {
167168
var d T
168-
err := json.Unmarshal(event.Kv.Value, &d)
169+
170+
value := event.Kv.Value
171+
if event.Type == clientv3.EventTypeDelete {
172+
if event.PrevKv != nil {
173+
return BasicEvent[T]{}, fmt.Errorf("key was deleted and has no previous state: %s", event.Kv.Key)
174+
}
175+
value = event.PrevKv.Value
176+
}
177+
178+
err := json.Unmarshal(value, &d)
169179
if err != nil {
170180
return BasicEvent[T]{}, err
171181
}

0 commit comments

Comments
 (0)