Chromium Code Reviews| Index: server/logdog/storage/bigtable/rowKey.go |
| diff --git a/server/logdog/storage/bigtable/rowKey.go b/server/logdog/storage/bigtable/rowKey.go |
| index f9d6c9ae7b13d166a1eab1c584c1f6285dbb4995..505159b9864caa04c3cf7723cedc0a195ef76db9 100644 |
| --- a/server/logdog/storage/bigtable/rowKey.go |
| +++ b/server/logdog/storage/bigtable/rowKey.go |
| @@ -107,10 +107,18 @@ type rowKey struct { |
| } |
| // newRowKey generates the row key matching a given entry path and index. |
| -func newRowKey(path string, index, count int64) *rowKey { |
| - pathHash := sha256.Sum256([]byte(path)) |
| +func newRowKey(project, path string, index, count int64) *rowKey { |
| + h := sha256.New() |
| + |
| + // TODO(dnj): Remove this conditional when non-project data is aged off. |
| + if project != "" { |
| + _, _ = h.Write([]byte(project)) |
|
Ryan Tseng
2016/04/28 21:04:31
isn't the assignment redundant at this point?
dnj
2016/04/30 02:56:49
Not really. There is actually a tool that will for
|
| + _, _ = h.Write([]byte("/")) |
| + } |
| + |
| + _, _ = h.Write([]byte(path)) |
| return &rowKey{ |
| - pathHash: pathHash[:], |
| + pathHash: h.Sum(nil), |
| index: index, |
| count: count, |
| } |
| @@ -129,7 +137,7 @@ func decodeRowKey(v string) (*rowKey, error) { |
| return nil, errMalformedRowKey |
| } |
| - // Decode encoded path hash. |
| + // Decode encoded project/path hash. |
| var err error |
| rk := rowKey{} |
| rk.pathHash, err = base64.URLEncoding.DecodeString(hashEnc) |
| @@ -174,7 +182,8 @@ func (rk *rowKey) encode() (v string) { |
| return |
| } |
| -// prefix returns the encoded path prefix for the row key. |
| +// prefix returns the encoded path prefix for the row key, which is the hash of |
| +// that row's project/path. |
| func (rk *rowKey) pathPrefix() (v string) { |
| withRowKeyBuffers(func(rkb *rowKeyBuffers) { |
| rkb.appendPathPrefix(rk.pathHash) |