Skip to content

Commit ee77d8e

Browse files
committed
Remove redundant CryptoKey cache field
The `latest` field in `CryptoKeyCache` was redundant and has been removed to simplify the code. Instead, the latest crypto key is now directly accessed from the `keys` map using `latestSequence`. This change reduces unnecessary state management and potential for data inconsistency.
1 parent b33616e commit ee77d8e

File tree

1 file changed

+14
-15
lines changed

1 file changed

+14
-15
lines changed

enterprise/wsproxy/keycache.go

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ type CryptoKeyCache struct {
3434

3535
mu sync.Mutex
3636
keys map[int32]codersdk.CryptoKey
37-
latest codersdk.CryptoKey
3837
lastFetch time.Time
3938
refresher *quartz.Timer
4039
fetching bool
@@ -57,12 +56,12 @@ func NewCryptoKeyCache(ctx context.Context, log slog.Logger, client Fetcher, opt
5756
cache.refreshCtx, cache.refreshCancel = context.WithCancel(ctx)
5857
cache.refresher = cache.Clock.AfterFunc(refreshInterval, cache.refresh)
5958

60-
m, latest, err := cache.cryptoKeys(ctx)
59+
keys, err := cache.cryptoKeys(ctx)
6160
if err != nil {
6261
cache.refreshCancel()
6362
return nil, xerrors.Errorf("initial fetch: %w", err)
6463
}
65-
cache.keys, cache.latest = m, latest
64+
cache.keys = keys
6665

6766
return cache, nil
6867
}
@@ -100,15 +99,15 @@ func (k *CryptoKeyCache) cryptoKey(ctx context.Context, sequence int32) (codersd
10099
k.fetching = true
101100
k.mu.Unlock()
102101

103-
keys, latest, err := k.cryptoKeys(ctx)
102+
keys, err := k.cryptoKeys(ctx)
104103
if err != nil {
105104
return codersdk.CryptoKey{}, xerrors.Errorf("get keys: %w", err)
106105
}
107106

108107
k.mu.Lock()
109108
k.lastFetch = k.Clock.Now()
110109
k.refresher.Reset(refreshInterval)
111-
k.keys, k.latest = keys, latest
110+
k.keys = keys
112111
k.fetching = false
113112
k.cond.Broadcast()
114113

@@ -122,7 +121,7 @@ func (k *CryptoKeyCache) cryptoKey(ctx context.Context, sequence int32) (codersd
122121

123122
func (k *CryptoKeyCache) key(sequence int32) (codersdk.CryptoKey, bool) {
124123
if sequence == latestSequence {
125-
return k.latest, k.latest.CanSign(k.Clock.Now())
124+
return k.keys[latestSequence], k.keys[latestSequence].CanSign(k.Clock.Now())
126125
}
127126

128127
key, ok := k.keys[sequence]
@@ -171,7 +170,7 @@ func (k *CryptoKeyCache) refresh() {
171170
k.fetching = true
172171

173172
k.mu.Unlock()
174-
keys, latest, err := k.cryptoKeys(k.refreshCtx)
173+
keys, err := k.cryptoKeys(k.refreshCtx)
175174
if err != nil {
176175
k.logger.Error(k.refreshCtx, "fetch crypto keys", slog.Error(err))
177176
return
@@ -182,32 +181,32 @@ func (k *CryptoKeyCache) refresh() {
182181

183182
k.lastFetch = k.Clock.Now()
184183
k.refresher.Reset(refreshInterval)
185-
k.keys, k.latest = keys, latest
184+
k.keys = keys
186185
k.fetching = false
187186
k.cond.Broadcast()
188187
}
189188

190189
// cryptoKeys queries the control plane for the crypto keys.
191190
// Outside of initialization, this should only be called by fetch.
192-
func (k *CryptoKeyCache) cryptoKeys(ctx context.Context) (map[int32]codersdk.CryptoKey, codersdk.CryptoKey, error) {
191+
func (k *CryptoKeyCache) cryptoKeys(ctx context.Context) (map[int32]codersdk.CryptoKey, error) {
193192
keys, err := k.fetcher.Fetch(ctx)
194193
if err != nil {
195-
return nil, codersdk.CryptoKey{}, xerrors.Errorf("crypto keys: %w", err)
194+
return nil, xerrors.Errorf("crypto keys: %w", err)
196195
}
197-
cache, latest := toKeyMap(keys, k.Clock.Now())
198-
return cache, latest, nil
196+
cache := toKeyMap(keys, k.Clock.Now())
197+
return cache, nil
199198
}
200199

201-
func toKeyMap(keys []codersdk.CryptoKey, now time.Time) (map[int32]codersdk.CryptoKey, codersdk.CryptoKey) {
200+
func toKeyMap(keys []codersdk.CryptoKey, now time.Time) map[int32]codersdk.CryptoKey {
202201
m := make(map[int32]codersdk.CryptoKey)
203202
var latest codersdk.CryptoKey
204203
for _, key := range keys {
205204
m[key.Sequence] = key
206205
if key.Sequence > latest.Sequence && key.CanSign(now) {
207-
latest = key
206+
m[latestSequence] = key
208207
}
209208
}
210-
return m, latest
209+
return m
211210
}
212211

213212
func (k *CryptoKeyCache) Close() {

0 commit comments

Comments
 (0)