Chromium Code Reviews| Index: server/logdog/storage/bigtable/bigtable.go |
| diff --git a/server/logdog/storage/bigtable/bigtable.go b/server/logdog/storage/bigtable/bigtable.go |
| index 3d4b9abddf0e494f55fe5d25b07e5a91e24e1691..b1038b8dfb640f82a6950a0be9b066201d37eb06 100644 |
| --- a/server/logdog/storage/bigtable/bigtable.go |
| +++ b/server/logdog/storage/bigtable/bigtable.go |
| @@ -52,6 +52,14 @@ type btTable interface { |
| getLogData(c context.Context, rk *rowKey, limit int, keysOnly bool, cb btGetCallback) error |
| } |
| +// btTransientSubstrings is the set of known error substrings returned by |
| +// BigTable that indicate failures that aren't related to the specific data |
| +// content. |
| +var btTransientSubstrings = []string{ |
| + "Internal error encountered", |
| + "interactive login is required", |
|
dnj (Google)
2016/01/21 04:36:25
Learning as we go.
|
| +} |
| + |
| // btTableProd is an implementation of the btTable interface that uses a real |
| // production BigTable connection. |
| type btTableProd struct { |
| @@ -150,8 +158,10 @@ func isTransient(err error) bool { |
| } |
| msg := err.Error() |
| - if strings.Contains(msg, "Internal error encountered") { |
| - return true |
| + for _, s := range btTransientSubstrings { |
| + if strings.Contains(msg, s) { |
| + return true |
| + } |
| } |
| return false |
| } |