Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Side by Side Diff: tokenserver/appengine/impl/delegation/config.go

Issue 2779323002: token-server: Warmup some local caches in /_ah/warmup. (Closed)
Patch Set: also warmup delegation config Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The LUCI Authors. All rights reserved. 1 // Copyright 2016 The LUCI Authors. All rights reserved.
2 // Use of this source code is governed under the Apache License, Version 2.0 2 // Use of this source code is governed under the Apache License, Version 2.0
3 // that can be found in the LICENSE file. 3 // that can be found in the LICENSE file.
4 4
5 package delegation 5 package delegation
6 6
7 import ( 7 import (
8 "fmt" 8 "fmt"
9 "strings" 9 "strings"
10 "time" 10 "time"
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 cfg := &DelegationConfig{} 90 cfg := &DelegationConfig{}
91 switch err := ds.Get(c, cfg); { 91 switch err := ds.Get(c, cfg); {
92 case err == ds.ErrNoSuchEntity: 92 case err == ds.ErrNoSuchEntity:
93 return cfg, nil 93 return cfg, nil
94 case err != nil: 94 case err != nil:
95 return nil, errors.WrapTransient(err) 95 return nil, errors.WrapTransient(err)
96 } 96 }
97 return cfg, nil 97 return cfg, nil
98 } 98 }
99 99
100 // DelegationConfigLoader constructs a function that lazy-loads delegation 100 // DelegationConfigLoader lazy-loads delegation config and keeps it cached in
101 // config and keeps it cached in memory, refreshing the cached copy each minute. 101 // memory, refreshing the cached copy each minute.
102 // 102 //
103 // Used as MintDelegationTokenRPC.ConfigLoader implementation in prod. 103 // Used as MintDelegationTokenRPC.ConfigLoader implementation in prod.
104 func DelegationConfigLoader() func(context.Context) (*DelegationConfig, error) { 104 var DelegationConfigLoader = delegationConfigLoader()
105
106 // delegationConfigLoader constructs a function that lazy-loads delegation
107 // config and keeps it cached in memory, refreshing the cached copy each minute.
108 func delegationConfigLoader() func(context.Context) (*DelegationConfig, error) {
105 slot := lazyslot.Slot{ 109 slot := lazyslot.Slot{
106 Fetcher: func(c context.Context, prev lazyslot.Value) (lazyslot. Value, error) { 110 Fetcher: func(c context.Context, prev lazyslot.Value) (lazyslot. Value, error) {
107 newCfg, err := FetchDelegationConfig(c) 111 newCfg, err := FetchDelegationConfig(c)
108 if err != nil { 112 if err != nil {
109 return lazyslot.Value{}, err 113 return lazyslot.Value{}, err
110 } 114 }
111 115
112 // Reuse existing unpacked validated config if the revis ion didn't change. 116 // Reuse existing unpacked validated config if the revis ion didn't change.
113 prevCfg, _ := prev.Value.(*DelegationConfig) 117 prevCfg, _ := prev.Value.(*DelegationConfig)
114 if prevCfg != nil && prevCfg.Revision == newCfg.Revision { 118 if prevCfg != nil && prevCfg.Revision == newCfg.Revision {
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 return false, nil 303 return false, nil
300 } 304 }
301 305
302 // Rule's allowed targets is superset of requested targets? 306 // Rule's allowed targets is superset of requested targets?
303 if !rule.services.IsSuperset(q.Services) { 307 if !rule.services.IsSuperset(q.Services) {
304 return false, nil 308 return false, nil
305 } 309 }
306 310
307 return true, nil 311 return true, nil
308 } 312 }
OLDNEW
« no previous file with comments | « tokenserver/appengine/impl/certconfig/warmup.go ('k') | tokenserver/appengine/impl/delegation/config_test.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698