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

Side by Side Diff: impl/memory/datastore.go

Issue 2498463003: Fix a bug where deletions weren't updating the raw Kind index. (Closed)
Patch Set: impl/memory: query limits/offsets count deleted Created 4 years, 1 month 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 2015 The LUCI Authors. All rights reserved. 1 // Copyright 2015 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 memory 5 package memory
6 6
7 import ( 7 import (
8 "errors" 8 "errors"
9 "fmt" 9 "fmt"
10 10
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 d.data.delMulti(keys, cb) 85 d.data.delMulti(keys, cb)
86 return nil 86 return nil
87 } 87 }
88 88
89 func (d *dsImpl) DecodeCursor(s string) (ds.Cursor, error) { 89 func (d *dsImpl) DecodeCursor(s string) (ds.Cursor, error) {
90 return newCursor(s) 90 return newCursor(s)
91 } 91 }
92 92
93 func (d *dsImpl) Run(fq *ds.FinalizedQuery, cb ds.RawRunCB) error { 93 func (d *dsImpl) Run(fq *ds.FinalizedQuery, cb ds.RawRunCB) error {
94 idx, head := d.data.getQuerySnaps(!fq.EventuallyConsistent()) 94 idx, head := d.data.getQuerySnaps(!fq.EventuallyConsistent())
95 » err := executeQuery(fq, d.kc, false, idx, head, cb) 95 » err := executeQuery(fq, d.kc, false, false, idx, head, cb)
96 if d.data.maybeAutoIndex(err) { 96 if d.data.maybeAutoIndex(err) {
97 idx, head = d.data.getQuerySnaps(!fq.EventuallyConsistent()) 97 idx, head = d.data.getQuerySnaps(!fq.EventuallyConsistent())
98 » » err = executeQuery(fq, d.kc, false, idx, head, cb) 98 » » err = executeQuery(fq, d.kc, false, false, idx, head, cb)
99 } 99 }
100 return err 100 return err
101 } 101 }
102 102
103 func (d *dsImpl) Count(fq *ds.FinalizedQuery) (ret int64, err error) { 103 func (d *dsImpl) Count(fq *ds.FinalizedQuery) (ret int64, err error) {
104 idx, head := d.data.getQuerySnaps(!fq.EventuallyConsistent()) 104 idx, head := d.data.getQuerySnaps(!fq.EventuallyConsistent())
105 ret, err = countQuery(fq, d.kc, false, idx, head) 105 ret, err = countQuery(fq, d.kc, false, idx, head)
106 if d.data.maybeAutoIndex(err) { 106 if d.data.maybeAutoIndex(err) {
107 idx, head := d.data.getQuerySnaps(!fq.EventuallyConsistent()) 107 idx, head := d.data.getQuerySnaps(!fq.EventuallyConsistent())
108 ret, err = countQuery(fq, d.kc, false, idx, head) 108 ret, err = countQuery(fq, d.kc, false, idx, head)
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 func (d *txnDsImpl) Run(q *ds.FinalizedQuery, cb ds.RawRunCB) error { 200 func (d *txnDsImpl) Run(q *ds.FinalizedQuery, cb ds.RawRunCB) error {
201 // note that autoIndex has no effect inside transactions. This is becaus e 201 // note that autoIndex has no effect inside transactions. This is becaus e
202 // the transaction guarantees a consistent view of head at the time that the 202 // the transaction guarantees a consistent view of head at the time that the
203 // transaction opens. At best, we could add the index on head, but then return 203 // transaction opens. At best, we could add the index on head, but then return
204 // the error anyway, but adding the index then re-snapping at head would 204 // the error anyway, but adding the index then re-snapping at head would
205 // potentially reveal other entities not in the original transaction sna pshot. 205 // potentially reveal other entities not in the original transaction sna pshot.
206 // 206 //
207 // It's possible that if you have full-consistency and also auto index e nabled 207 // It's possible that if you have full-consistency and also auto index e nabled
208 // that this would make sense... but at that point you should probably j ust 208 // that this would make sense... but at that point you should probably j ust
209 // add the index up front. 209 // add the index up front.
210 » return executeQuery(q, d.kc, true, d.data.snap, d.data.snap, cb) 210 » return executeQuery(q, d.kc, true, false, d.data.snap, d.data.snap, cb)
211 } 211 }
212 212
213 func (d *txnDsImpl) Count(fq *ds.FinalizedQuery) (ret int64, err error) { 213 func (d *txnDsImpl) Count(fq *ds.FinalizedQuery) (ret int64, err error) {
214 return countQuery(fq, d.kc, true, d.data.snap, d.data.snap) 214 return countQuery(fq, d.kc, true, d.data.snap, d.data.snap)
215 } 215 }
216 216
217 func (*txnDsImpl) RunInTransaction(func(c context.Context) error, *ds.Transactio nOptions) error { 217 func (*txnDsImpl) RunInTransaction(func(c context.Context) error, *ds.Transactio nOptions) error {
218 return errors.New("datastore: nested transactions are not supported") 218 return errors.New("datastore: nested transactions are not supported")
219 } 219 }
220 220
221 func (d *txnDsImpl) WithoutTransaction() context.Context { 221 func (d *txnDsImpl) WithoutTransaction() context.Context {
222 » return context.WithValue(d, currentTxnKey, nil) 222 » return context.WithValue(d, &currentTxnKey, nil)
223 } 223 }
224 224
225 func (d *txnDsImpl) CurrentTransaction() ds.Transaction { 225 func (d *txnDsImpl) CurrentTransaction() ds.Transaction {
226 return d.data.txn 226 return d.data.txn
227 } 227 }
228 228
229 func (d *txnDsImpl) GetTestable() ds.Testable { return nil } 229 func (d *txnDsImpl) GetTestable() ds.Testable { return nil }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698