MM-14246 - Plugin framework: support transactional semantics with KV Store (#10634)

* MM-14246 - Plugin framework: support transactional semantics with KV Store

Rename old, new variable names

Moving New function to the bottom

* Made CompareAndUpdate sync, updated tests

* Removed going through channel in CompareAndSetPluginKey

* Inserting new key when oldValue is nil to KVCompareAndSet

* Updated error text to include CompareAndSet
Этот коммит содержится в:
Ali F
2019-04-23 13:35:17 -04:00
коммит произвёл Christopher Speller
родитель 446c6d452e
Коммит 6f8577b4c1
10 изменённых файлов: 311 добавлений и 0 удалений

Просмотреть файл

@@ -3490,6 +3490,37 @@ func (s *apiRPCServer) KVSet(args *Z_KVSetArgs, returns *Z_KVSetReturns) error {
return nil
}
type Z_KVCompareAndSetArgs struct {
A string
B []byte
C []byte
}
type Z_KVCompareAndSetReturns struct {
A bool
B *model.AppError
}
func (g *apiRPCClient) KVCompareAndSet(key string, oldValue, newValue []byte) (bool, *model.AppError) {
_args := &Z_KVCompareAndSetArgs{key, oldValue, newValue}
_returns := &Z_KVCompareAndSetReturns{}
if err := g.client.Call("Plugin.KVCompareAndSet", _args, _returns); err != nil {
log.Printf("RPC call to KVCompareAndSet API failed: %s", err.Error())
}
return _returns.A, _returns.B
}
func (s *apiRPCServer) KVCompareAndSet(args *Z_KVCompareAndSetArgs, returns *Z_KVCompareAndSetReturns) error {
if hook, ok := s.impl.(interface {
KVCompareAndSet(key string, oldValue, newValue []byte) (bool, *model.AppError)
}); ok {
returns.A, returns.B = hook.KVCompareAndSet(args.A, args.B, args.C)
} else {
return encodableError(fmt.Errorf("API KVCompareAndSet called but not implemented."))
}
return nil
}
type Z_KVSetWithExpiryArgs struct {
A string
B []byte