Skip to content

Commit 1e319d7

Browse files
committed
Moving to a lock free system for lazy loading
1 parent e7f3ce8 commit 1e319d7

2 files changed

Lines changed: 17 additions & 17 deletions

File tree

pkg/api/api.go

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -249,23 +249,21 @@ func (api *KentikApi) GetDevice(ctx context.Context, cid kt.Cid, did kt.DeviceID
249249
return dev
250250
}
251251
if api.lazyLoadCustoms && !dev.LoadedCustoms() {
252-
api.mux.Lock()
253-
defer api.mux.Unlock()
254-
if dev.LoadedCustoms() {
255-
return dev
256-
}
257-
for _, info := range api.config.KentikCreds {
258-
md := metadata.New(map[string]string{
259-
"X-CH-Auth-Email": info.APIEmail,
260-
"X-CH-Auth-API-Token": info.APIToken,
261-
})
262-
ctxo := metadata.NewOutgoingContext(ctx, md)
263-
err := api.loadCustoms(ctxo, dev.IDStr, dev)
264-
if err != nil {
265-
api.Warnf("Cannot load customs for %s %s, %v", dev.IDStr, info.APIEmail, err)
252+
go func() {
253+
for _, info := range api.config.KentikCreds {
254+
md := metadata.New(map[string]string{
255+
"X-CH-Auth-Email": info.APIEmail,
256+
"X-CH-Auth-API-Token": info.APIToken,
257+
})
258+
ctxo := metadata.NewOutgoingContext(ctx, md)
259+
err := api.loadCustoms(ctxo, dev.IDStr, dev)
260+
if err != nil {
261+
api.Warnf("Cannot load customs for %s %s, %v", dev.IDStr, info.APIEmail, err)
262+
} else {
263+
return
264+
}
266265
}
267-
break
268-
}
266+
}()
269267
}
270268
return dev
271269
}

pkg/kt/device_types.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,9 @@ func (d *Device) AddCustoms(dd *devicepb.DeviceDetailed) {
179179
}
180180

181181
func (d *Device) LoadedCustoms() bool {
182-
return d.loadedCustoms
182+
lc := d.loadedCustoms
183+
d.loadedCustoms = true
184+
return lc
183185
}
184186

185187
func (d *Device) AddInterface(p *interfacepb.Interface) {

0 commit comments

Comments
 (0)