Merge pull request #984 from pingcap/coocood/dirty-txn
kv: add IsReadOnly method for kv.Transaction.
This commit is contained in:
2
kv/kv.go
2
kv/kv.go
@ -74,6 +74,8 @@ type Transaction interface {
|
||||
SetOption(opt Option, val interface{})
|
||||
// DelOption deletes an option.
|
||||
DelOption(opt Option)
|
||||
// IsReadOnly checks if the transaction has only performed read operations.
|
||||
IsReadOnly() bool
|
||||
}
|
||||
|
||||
// Snapshot defines the interface for the snapshot fetched from KV store.
|
||||
|
||||
@ -36,6 +36,7 @@ type hbaseTxn struct {
|
||||
tid uint64
|
||||
valid bool
|
||||
version kv.Version // commit version
|
||||
dirty bool
|
||||
}
|
||||
|
||||
func newHbaseTxn(t themis.Txn, storeName string) *hbaseTxn {
|
||||
@ -57,6 +58,7 @@ func (txn *hbaseTxn) Get(k kv.Key) ([]byte, error) {
|
||||
|
||||
func (txn *hbaseTxn) Set(k kv.Key, v []byte) error {
|
||||
log.Debugf("[kv] set %q txn:%d", k, txn.tid)
|
||||
txn.dirty = true
|
||||
return txn.us.Set(k, v)
|
||||
}
|
||||
|
||||
@ -71,6 +73,7 @@ func (txn *hbaseTxn) Seek(k kv.Key) (kv.Iterator, error) {
|
||||
|
||||
func (txn *hbaseTxn) Delete(k kv.Key) error {
|
||||
log.Debugf("[kv] delete %q txn:%d", k, txn.tid)
|
||||
txn.dirty = true
|
||||
return txn.us.Delete(k)
|
||||
}
|
||||
|
||||
@ -154,3 +157,7 @@ func (txn *hbaseTxn) LockKeys(keys ...kv.Key) error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (txn *hbaseTxn) IsReadOnly() bool {
|
||||
return !txn.dirty
|
||||
}
|
||||
|
||||
@ -33,6 +33,7 @@ type dbTxn struct {
|
||||
valid bool
|
||||
version kv.Version // commit version
|
||||
lockedKeys map[string]struct{} // origin version in snapshot
|
||||
dirty bool
|
||||
}
|
||||
|
||||
func newTxn(s *dbStore, ver kv.Version) *dbTxn {
|
||||
@ -57,6 +58,7 @@ func (txn *dbTxn) Get(k kv.Key) ([]byte, error) {
|
||||
|
||||
func (txn *dbTxn) Set(k kv.Key, data []byte) error {
|
||||
log.Debugf("[kv] set key:%q, txn:%d", k, txn.tid)
|
||||
txn.dirty = true
|
||||
return txn.us.Set(k, data)
|
||||
}
|
||||
|
||||
@ -71,6 +73,7 @@ func (txn *dbTxn) Seek(k kv.Key) (kv.Iterator, error) {
|
||||
|
||||
func (txn *dbTxn) Delete(k kv.Key) error {
|
||||
log.Debugf("[kv] delete key:%q, txn:%d", k, txn.tid)
|
||||
txn.dirty = true
|
||||
return txn.us.Delete(k)
|
||||
}
|
||||
|
||||
@ -132,3 +135,7 @@ func (txn *dbTxn) LockKeys(keys ...kv.Key) error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (txn *dbTxn) IsReadOnly() bool {
|
||||
return !txn.dirty
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user