[#253] pool: Don't count regular FrostFS errors #253

Merged
dkirillov merged 1 commit from dkirillov/frostfs-sdk-go:bugfix/dont_count_eacl_not_found_error into master 2024-08-14 14:36:30 +00:00
2 changed files with 34 additions and 10 deletions
Showing only changes of commit 203bba65a0 - Show all commits

View file

@ -1227,6 +1227,22 @@ func (c *clientWrapper) close() error {
}
func (c *clientStatusMonitor) handleError(ctx context.Context, st apistatus.Status, err error) error {
if stErr := apistatus.ErrFromStatus(st); stErr != nil {
switch stErr.(type) {
case *apistatus.ServerInternal,
*apistatus.WrongMagicNumber,
*apistatus.SignatureVerification,
*apistatus.NodeUnderMaintenance:
c.incErrorRate()
}
if err == nil {
err = stErr
}
return err
}
if err != nil {
if needCountError(ctx, err) {
c.incErrorRate()
@ -1235,16 +1251,7 @@ func (c *clientStatusMonitor) handleError(ctx context.Context, st apistatus.Stat
return err
}
err = apistatus.ErrFromStatus(st)
switch err.(type) {
case *apistatus.ServerInternal,
*apistatus.WrongMagicNumber,
*apistatus.SignatureVerification,
*apistatus.NodeUnderMaintenance:
c.incErrorRate()
}
return err
return nil
}
func needCountError(ctx context.Context, err error) bool {

View file

@ -609,6 +609,23 @@ func TestHandleError(t *testing.T) {
expectedError: true,
countError: false,
},
{
ctx: ctx,
status: new(apistatus.ObjectNotFound),
err: &apistatus.ObjectNotFound{},
expectedError: true,
countError: false,
},
{
ctx: ctx,
status: nil,
err: &apistatus.EACLNotFound{},
expectedError: true,
// we expect error be counted because status is nil
// currently we assume that DisableFrostFSErrorResolution be always false for pool
// and status be checked first in handleError
countError: true,
},
{
ctx: ctx,
status: new(apistatus.ServerInternal),