Skip to content

Commit

Permalink
Update pinned components-contrib (dapr#6650)
Browse files Browse the repository at this point in the history
* Updated pinned components-contrib

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* Add MultiMaxSize

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* Updated actors.executeStateStoreTransaction too

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* Fixes

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

---------

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
  • Loading branch information
ItalyPaleAle and dapr-bot authored Jul 27, 2023
1 parent 82654ae commit 54f0170
Show file tree
Hide file tree
Showing 45 changed files with 229 additions and 227 deletions.
8 changes: 4 additions & 4 deletions .build-tools/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ go 1.20
require (
github.com/google/go-containerregistry v0.11.1-0.20220802162123-c1f9836a4fa9
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06
github.com/spf13/cobra v1.5.0
github.com/spf13/cobra v1.7.0
)

require (
Expand All @@ -14,7 +14,7 @@ require (
github.com/docker/distribution v2.8.1+incompatible // indirect
github.com/docker/docker v20.10.17+incompatible // indirect
github.com/docker/docker-credential-helpers v0.6.4 // indirect
github.com/inconshreveable/mousetrap v1.0.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/klauspost/compress v1.15.8 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
Expand All @@ -23,6 +23,6 @@ require (
github.com/sirupsen/logrus v1.9.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/vbatts/tar-split v0.11.2 // indirect
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f // indirect
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 // indirect
golang.org/x/sync v0.3.0 // indirect
golang.org/x/sys v0.10.0 // indirect
)
19 changes: 10 additions & 9 deletions .build-tools/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ github.com/docker/docker-credential-helpers v0.6.4/go.mod h1:ofX3UI0Gz1TteYBjtgs
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
github.com/google/go-containerregistry v0.11.1-0.20220802162123-c1f9836a4fa9 h1:CUtt5NgbyWugcBKsuZ2MqU9sWtvnn9GlF7E0wCVkN2A=
github.com/google/go-containerregistry v0.11.1-0.20220802162123-c1f9836a4fa9/go.mod h1:jKEnAxppqUcGiMBChcvD0yTlWQwbZBitVvUeOaYUUTE=
github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/klauspost/compress v1.15.7/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
github.com/klauspost/compress v1.15.8 h1:JahtItbkWjf2jzm/T+qgMxkP9EMHsqEUA6vCMGmXvhA=
github.com/klauspost/compress v1.15.8/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
Expand All @@ -42,8 +42,8 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeV
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/spf13/cobra v1.5.0 h1:X+jTBEBqF0bHN+9cSMgmfuvv2VHJ9ezmFNf9Y/XstYU=
github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM=
github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I=
github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
Expand All @@ -60,16 +60,17 @@ github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f h1:Ax0t5p6N38Ga0dThY21weqDEyz2oklo4IvDkpigvkD8=
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 h1:0A+M6Uqn+Eje4kHMK80dtF3JCXC4ykBgQG4Fe06QRhQ=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA=
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0=
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ require (
github.com/PuerkitoBio/purell v1.2.0
github.com/argoproj/argo-rollouts v1.4.1
github.com/cenkalti/backoff/v4 v4.2.1
github.com/dapr/components-contrib v1.11.3-0.20230721142610-9957d6969dda
github.com/dapr/components-contrib v1.11.3-0.20230725200615-9ca07d9bca9d
github.com/dapr/kit v0.11.3
github.com/evanphx/json-patch/v5 v5.6.0
github.com/go-chi/chi/v5 v5.0.8
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -386,8 +386,8 @@ github.com/dancannon/gorethink v4.0.0+incompatible h1:KFV7Gha3AuqT+gr0B/eKvGhbjm
github.com/dancannon/gorethink v4.0.0+incompatible/go.mod h1:BLvkat9KmZc1efyYwhz3WnybhRZtgF1K929FD8z1avU=
github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0=
github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0=
github.com/dapr/components-contrib v1.11.3-0.20230721142610-9957d6969dda h1:/mqw0Y7Y+97Miw7dsU+co72asz7AvU8dfxL/NBVH1VU=
github.com/dapr/components-contrib v1.11.3-0.20230721142610-9957d6969dda/go.mod h1:dNF+ZsfsVwmPFDNkbZgbNv34XszWXCFH3xaSppWSY58=
github.com/dapr/components-contrib v1.11.3-0.20230725200615-9ca07d9bca9d h1:m21ws4yvLi8tieljmNNXPi3FP5wwwHQcBd6n8pZnBjM=
github.com/dapr/components-contrib v1.11.3-0.20230725200615-9ca07d9bca9d/go.mod h1:dNF+ZsfsVwmPFDNkbZgbNv34XszWXCFH3xaSppWSY58=
github.com/dapr/kit v0.11.3 h1:u1X92tE8xsrwXIej7nkcI5Z1t1CFznPwlL18tizNEw4=
github.com/dapr/kit v0.11.3/go.mod h1:hQA6xOhcLAiccXTj7e3/bzpHwvAJCSCp70p2xg3jB40=
github.com/dave/jennifer v1.4.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg=
Expand Down
21 changes: 14 additions & 7 deletions pkg/actors/actors.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,11 @@ const (
var (
log = logger.NewLogger("dapr.runtime.actor")

ErrIncompatibleStateStore = errors.New("actor state store does not exist, or does not support transactions which are required to save state - please see https://docs.dapr.io/operations/components/setup-state-store/supported-state-stores/")
ErrDaprResponseHeader = errors.New("error indicated via actor header response")
ErrReminderOpActorNotHosted = errors.New("operations on actor reminders are only possible on hosted actor types")
ErrReminderCanceled = internal.ErrReminderCanceled
ErrIncompatibleStateStore = errors.New("actor state store does not exist, or does not support transactions which are required to save state - please see https://docs.dapr.io/operations/components/setup-state-store/supported-state-stores/")
ErrDaprResponseHeader = errors.New("error indicated via actor header response")
ErrReminderOpActorNotHosted = errors.New("operations on actor reminders are only possible on hosted actor types")
ErrTransactionsTooManyOperations = errors.New("the transaction contains more operations than supported by the state store")
ErrReminderCanceled = internal.ErrReminderCanceled
)

// Actors allow calling into virtual actors as well as actor state management.
Expand Down Expand Up @@ -656,13 +657,19 @@ func (a *actorsRuntime) TransactionalStateOperation(ctx context.Context, req *Tr
}

func (a *actorsRuntime) executeStateStoreTransaction(ctx context.Context, store internal.TransactionalStateStore, operations []state.TransactionalStateOperation, metadata map[string]string) error {
policyRunner := resiliency.NewRunner[struct{}](ctx,
a.resiliency.ComponentOutboundPolicy(a.storeName, resiliency.Statestore),
)
if maxMulti, ok := store.(state.TransactionalStoreMultiMaxSize); ok {
max := maxMulti.MultiMaxSize()
if max > 0 && len(operations) > max {
return ErrTransactionsTooManyOperations
}
}
stateReq := &state.TransactionalStateRequest{
Operations: operations,
Metadata: metadata,
}
policyRunner := resiliency.NewRunner[struct{}](ctx,
a.resiliency.ComponentOutboundPolicy(a.storeName, resiliency.Statestore),
)
_, err := policyRunner(func(ctx context.Context) (struct{}, error) {
return struct{}{}, store.Multi(ctx, stateReq)
})
Expand Down
34 changes: 34 additions & 0 deletions pkg/actors/actors_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ package actors
import (
"context"
"encoding/json"
"fmt"
"strconv"
"strings"
"testing"
Expand Down Expand Up @@ -837,6 +838,39 @@ func TestTransactionalState(t *testing.T) {
assert.NoError(t, err)
})

t.Run("Too many requests fail", func(t *testing.T) {
testActorsRuntime := newTestActorsRuntime()
defer testActorsRuntime.Stop()

store, err := testActorsRuntime.stateStore()
require.NoError(t, err)
fakeStore, ok := store.(*daprt.FakeStateStore)
require.True(t, ok)
fakeStore.MaxOperations = 10

actorType, actorID := getTestActorTypeAndID()

fakeCallAndActivateActor(testActorsRuntime, actorType, actorID, testActorsRuntime.clock)

ops := make([]TransactionalOperation, 20)
for i := 0; i < 20; i++ {
ops[i] = TransactionalOperation{
Operation: Upsert,
Request: TransactionalUpsert{
Key: fmt.Sprintf("key%d", i),
Value: "hello",
},
}
}
err = testActorsRuntime.TransactionalStateOperation(ctx, &TransactionalRequest{
ActorType: actorType,
ActorID: actorID,
Operations: ops,
})
assert.Error(t, err)
assert.ErrorIs(t, err, ErrTransactionsTooManyOperations)
})

t.Run("Wrong request body - should fail", func(t *testing.T) {
testActorsRuntime := newTestActorsRuntime()
defer testActorsRuntime.Stop()
Expand Down
6 changes: 0 additions & 6 deletions pkg/components/bindings/input_pluggable.go
Original file line number Diff line number Diff line change
Expand Up @@ -152,12 +152,6 @@ func (b *grpcInputBinding) Close() error {
return b.InputBinding.Close()
}

// Returns the component metadata options
func (b *grpcInputBinding) GetComponentMetadata() map[string]string {
// GetComponentMetadata does not apply to pluggable components as there is no standard metadata to return
return map[string]string{}
}

// inputFromConnector creates a new GRPC inputbinding using the given underlying connector.
func inputFromConnector(l logger.Logger, connector *pluggable.GRPCConnector[proto.InputBindingClient]) *grpcInputBinding {
return &grpcInputBinding{
Expand Down
6 changes: 0 additions & 6 deletions pkg/components/bindings/output_pluggable.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,12 +90,6 @@ func (b *grpcOutputBinding) Invoke(ctx context.Context, req *bindings.InvokeRequ
}, nil
}

// Returns the component metadata options
func (b *grpcOutputBinding) GetComponentMetadata() map[string]string {
// GetComponentMetadata does not apply to pluggable components as there is no standard metadata to return
return map[string]string{}
}

// outputFromConnector creates a new GRPC outputbinding using the given underlying connector.
func outputFromConnector(_ logger.Logger, connector *pluggable.GRPCConnector[proto.OutputBindingClient]) *grpcOutputBinding {
return &grpcOutputBinding{
Expand Down
6 changes: 0 additions & 6 deletions pkg/components/pubsub/pluggable.go
Original file line number Diff line number Diff line change
Expand Up @@ -214,12 +214,6 @@ func (p *grpcPubSub) Subscribe(ctx context.Context, req pubsub.SubscribeRequest,
return p.pullMessages(ctx, subscription, handler)
}

// Returns the component metadata options
func (p *grpcPubSub) GetComponentMetadata() map[string]string {
// GetComponentMetadata does not apply to pluggable components as there is no standard metadata to return
return map[string]string{}
}

// fromConnector creates a new GRPC pubsub using the given underlying connector.
func fromConnector(l logger.Logger, connector *pluggable.GRPCConnector[proto.PubSubClient]) *grpcPubSub {
return &grpcPubSub{
Expand Down
6 changes: 0 additions & 6 deletions pkg/components/state/pluggable.go
Original file line number Diff line number Diff line change
Expand Up @@ -185,12 +185,6 @@ func (ss *grpcStateStore) Features() []state.Feature {
return ss.features
}

// Returns the component metadata options
func (ss *grpcStateStore) GetComponentMetadata() map[string]string {
// GetComponentMetadata does not apply to pluggable components as there is no standard metadata to return
return map[string]string{}
}

// Delete performs a delete operation.
func (ss *grpcStateStore) Delete(ctx context.Context, req *state.DeleteRequest) error {
_, err := ss.Client.Delete(ctx, toDeleteRequest(req))
Expand Down
9 changes: 9 additions & 0 deletions pkg/grpc/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -909,6 +909,15 @@ func (a *api) ExecuteStateTransaction(ctx context.Context, in *runtimev1pb.Execu
}
}

if maxMulti, ok := store.(state.TransactionalStoreMultiMaxSize); ok {
max := maxMulti.MultiMaxSize()
if max > 0 && len(operations) > max {
err := messages.ErrStateTooManyTransactionalOp.WithFormat(len(operations), max)
apiServerLogger.Debug(err)
return &emptypb.Empty{}, err
}
}

if encryption.EncryptedStateStore(in.StoreName) {
for i, op := range operations {
switch req := op.(type) {
Expand Down
34 changes: 26 additions & 8 deletions pkg/grpc/api_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ import (
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/types/known/anypb"
"google.golang.org/protobuf/types/known/emptypb"

v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1"

Expand Down Expand Up @@ -2682,6 +2681,7 @@ func TestTransactionStateStoreNotImplemented(t *testing.T) {

func TestExecuteStateTransaction(t *testing.T) {
fakeStore := &daprt.TransactionalStoreMock{}
fakeStore.MaxOperations = 10
matchKeyFn := func(ctx context.Context, req *state.TransactionalStateRequest, key string) bool {
if len(req.Operations) == 1 {
if rr, ok := req.Operations[0].(state.SetRequest); ok {
Expand Down Expand Up @@ -2725,13 +2725,25 @@ func TestExecuteStateTransaction(t *testing.T) {

client := runtimev1pb.NewDaprClient(clientConn)

tooManyOperations := make([]*runtimev1pb.TransactionalStateOperation, 20)
for i := 0; i < 20; i++ {
tooManyOperations[i] = &runtimev1pb.TransactionalStateOperation{
OperationType: string(state.OperationUpsert),
Request: &commonv1pb.StateItem{
Key: fmt.Sprintf("op%d", i),
Value: []byte("1"),
},
}
}

stateOptions, _ := GenerateStateOptionsTestCase()
testCases := []struct {
testName string
storeName string
operation state.OperationType
key string
value []byte
ops []*runtimev1pb.TransactionalStateOperation
options *commonv1pb.StateOptions
errorExcepted bool
expectedError codes.Code
Expand Down Expand Up @@ -2769,13 +2781,23 @@ func TestExecuteStateTransaction(t *testing.T) {
errorExcepted: true,
expectedError: codes.Internal,
},
{
testName: "fails with too many operations",
storeName: "store1",
ops: tooManyOperations,
errorExcepted: true,
expectedError: codes.InvalidArgument,
},
}

for _, tt := range testCases {
t.Run(tt.testName, func(t *testing.T) {
req := &runtimev1pb.ExecuteStateTransactionRequest{
StoreName: tt.storeName,
Operations: []*runtimev1pb.TransactionalStateOperation{
StoreName: tt.storeName,
Operations: tt.ops,
}
if tt.ops == nil {
req.Operations = []*runtimev1pb.TransactionalStateOperation{
{
OperationType: string(tt.operation),
Request: &commonv1pb.StateItem{
Expand All @@ -2784,7 +2806,7 @@ func TestExecuteStateTransaction(t *testing.T) {
Options: stateOptions,
},
},
},
}
}

_, err := client.ExecuteStateTransaction(context.Background(), req)
Expand Down Expand Up @@ -3749,10 +3771,6 @@ func (m *mockConfigStore) Init(ctx context.Context, metadata configuration.Metad
return nil
}

func (m *mockConfigStore) GetComponentMetadata() map[string]string {
return map[string]string{}
}

func (m *mockConfigStore) Get(ctx context.Context, req *configuration.GetRequest) (*configuration.GetResponse, error) {
items := map[string]*configuration.Item{
"key1": {Value: "val1"},
Expand Down
10 changes: 10 additions & 0 deletions pkg/http/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -2153,6 +2153,16 @@ func (a *api) onPostStateTransaction(reqCtx *fasthttp.RequestCtx) {
}
}

if maxMulti, ok := store.(state.TransactionalStoreMultiMaxSize); ok {
max := maxMulti.MultiMaxSize()
if max > 0 && len(operations) > max {
err := messages.ErrStateTooManyTransactionalOp.WithFormat(len(operations), max)
log.Debug(err)
universalFastHTTPErrorResponder(reqCtx, err)
return
}
}

if encryption.EncryptedStateStore(storeName) {
for i, op := range operations {
switch req := op.(type) {
Expand Down
Loading

0 comments on commit 54f0170

Please sign in to comment.