Skip to content

Commit 7241c2b

Browse files
committed
fix: SetError(nil) for cached values before Unmarshal()
1 parent 7b54d2f commit 7241c2b

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

memcache4dalgo/get.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ func getRecord(ctx context.Context, record dal.Record, get func(ctx context.Cont
1111
key := record.Key().String()
1212
var item *memcache.Item
1313
if item, err = memcache.Get(ctx, key); err == nil {
14+
record.SetError(nil)
1415
if err = json.Unmarshal(item.Value, record.Data()); err == nil {
1516
if Debugf != nil {
1617
Debugf(ctx, "memcache4dalgo.getRecord: hit %s", key)

memcache4dalgo/get_multi.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ func getMultiRecords(ctx context.Context, records []dal.Record, getMulti func(co
1818
items, err := memcache.GetMulti(ctx, keys)
1919
if err == nil {
2020
for key, item := range items {
21-
if err = json.Unmarshal(item.Value, recordsByKey[key].Data()); err == nil {
21+
r := recordsByKey[key]
22+
r.SetError(nil)
23+
if err = json.Unmarshal(item.Value, r.Data()); err == nil {
2224
delete(recordsByKey, key)
2325
if Debugf != nil {
2426
Debugf(ctx, "memcache4dalgo.getMultiRecords: hit %s", key)
@@ -37,6 +39,9 @@ func getMultiRecords(ctx context.Context, records []dal.Record, getMulti func(co
3739
if err = getMulti(ctx, records); err == nil {
3840
var mks []string
3941
for _, r := range records {
42+
if r.Error() != nil {
43+
continue
44+
}
4045
key := r.Key().String()
4146
var value []byte
4247
if value, err = json.Marshal(r.Data()); err == nil {

0 commit comments

Comments
 (0)