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

Side by Side Diff: common/auth/internal/disk_cache.go

Issue 2951393002: [errors] de-specialize Transient in favor of Tags. (Closed)
Patch Set: copyright Created 3 years, 6 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 2017 The LUCI Authors. All rights reserved. 1 // Copyright 2017 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 internal 5 package internal
6 6
7 import ( 7 import (
8 "encoding/json" 8 "encoding/json"
9 "io/ioutil" 9 "io/ioutil"
10 "os" 10 "os"
11 "path/filepath" 11 "path/filepath"
12 "time" 12 "time"
13 13
14 "golang.org/x/net/context" 14 "golang.org/x/net/context"
15 "golang.org/x/oauth2" 15 "golang.org/x/oauth2"
16 16
17 "github.com/luci/luci-go/common/clock" 17 "github.com/luci/luci-go/common/clock"
18 "github.com/luci/luci-go/common/errors"
19 "github.com/luci/luci-go/common/logging" 18 "github.com/luci/luci-go/common/logging"
20 "github.com/luci/luci-go/common/retry" 19 "github.com/luci/luci-go/common/retry"
21 ) 20 )
22 21
23 const ( 22 const (
24 // GCAccessTokenMaxAge defines when to remove unused access tokens from the 23 // GCAccessTokenMaxAge defines when to remove unused access tokens from the
25 // disk cache. 24 // disk cache.
26 // 25 //
27 // We define "an access token" as an instance of oauth2.Token with 26 // We define "an access token" as an instance of oauth2.Token with
28 // RefreshToken set to "". 27 // RefreshToken set to "".
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 } 190 }
192 191
193 // Note that TempFile creates the file in 0600 mode already, so we don't need 192 // Note that TempFile creates the file in 0600 mode already, so we don't need
194 // to chmod it. 193 // to chmod it.
195 // 194 //
196 // On Windows Rename may fail with sharing violation error if some other 195 // On Windows Rename may fail with sharing violation error if some other
197 // process has opened the file. We treat it as transient error, to trigg er 196 // process has opened the file. We treat it as transient error, to trigg er
198 // a retry in updateCacheFile. 197 // a retry in updateCacheFile.
199 if err = os.Rename(tmp.Name(), c.absPath()); err != nil { 198 if err = os.Rename(tmp.Name(), c.absPath()); err != nil {
200 cleanup() 199 cleanup()
201 » » return errors.WrapTransient(err) 200 » » return retry.Tag.Apply(err)
202 } 201 }
203 return nil 202 return nil
204 } 203 }
205 204
206 // updateCacheFile reads the token cache file, calls the callback, writes the fi le 205 // updateCacheFile reads the token cache file, calls the callback, writes the fi le
207 // back if the callback returns 'true'. 206 // back if the callback returns 'true'.
208 // 207 //
209 // It retries a bunch of times when encountering sharing violation errors on 208 // It retries a bunch of times when encountering sharing violation errors on
210 // Windows. 209 // Windows.
211 // 210 //
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 return c.updateCacheFile(func(cache *cacheFile, now time.Time) bool { 278 return c.updateCacheFile(func(cache *cacheFile, now time.Time) bool {
280 for i, entry := range cache.Cache { 279 for i, entry := range cache.Cache {
281 if EqualCacheKeys(&entry.Key, key) { 280 if EqualCacheKeys(&entry.Key, key) {
282 cache.Cache = append(cache.Cache[:i], cache.Cach e[i+1:]...) 281 cache.Cache = append(cache.Cache[:i], cache.Cach e[i+1:]...)
283 return true 282 return true
284 } 283 }
285 } 284 }
286 return false // not there, this is fine, skip writing the file 285 return false // not there, this is fine, skip writing the file
287 }) 286 })
288 } 287 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698