engine: Remove error counting methods from Shard
Some checks failed
Tests and linters / Run gofumpt (pull_request) Successful in 1m57s
DCO action / DCO (pull_request) Failing after 2m16s
Pre-commit hooks / Pre-commit (pull_request) Successful in 2m30s
Tests and linters / gopls check (pull_request) Successful in 3m33s
Vulncheck / Vulncheck (pull_request) Successful in 3m42s
Tests and linters / Lint (pull_request) Successful in 3m52s
Build / Build Components (pull_request) Successful in 4m42s
Tests and linters / Staticcheck (pull_request) Successful in 4m52s
Tests and linters / Tests (pull_request) Successful in 6m43s
Tests and linters / Tests with -race (pull_request) Successful in 6m50s

All error counting and hangling logic is present on the engine level.
Currently, we pass engine metrics with shard ID metric to shard, then
export 3 methods to manipulate these metrics.
In this commits all methods are removed and error counter is tracked on
the engine level exlusively.

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
This commit is contained in:
Evgenii Stratonikov 2024-10-04 15:07:20 +03:00
parent 903a25bdd7
commit 322d4cff3b
4 changed files with 4 additions and 25 deletions

View file

@ -144,7 +144,7 @@ func (e *StorageEngine) reportShardError(
}
errCount := sh.errorCount.Add(1)
sh.Shard.IncErrorCounter()
e.metrics.IncErrorCounter(sh.ID().String())
sid := sh.ID()
e.log.Warn(msg, append([]zap.Field{

View file

@ -217,7 +217,7 @@ func (e *StorageEngine) removeShards(ids ...string) {
continue
}
sh.DeleteShardMetrics()
e.metrics.DeleteShardMetrics(id)
ss = append(ss, sh)
delete(e.shards, id)
@ -318,7 +318,7 @@ func (e *StorageEngine) SetShardMode(id *shard.ID, m mode.Mode, resetErrorCounte
if id.String() == shID {
if resetErrorCounter {
sh.errorCount.Store(0)
sh.Shard.ClearErrorCounter()
e.metrics.ClearErrorCounter(shID)
}
return sh.SetMode(m)
}
@ -422,7 +422,7 @@ func (e *StorageEngine) deleteShards(ids []*shard.ID) ([]hashedShard, error) {
for _, sh := range ss {
idStr := sh.ID().String()
sh.DeleteShardMetrics()
e.metrics.DeleteShardMetrics(idStr)
delete(e.shards, idStr)

View file

@ -24,12 +24,6 @@ type MetricsWriter interface {
SetShardID(id string)
// SetReadonly must set shard mode.
SetMode(mode mode.Mode)
// IncErrorCounter increment error counter.
IncErrorCounter()
// ClearErrorCounter clear error counter.
ClearErrorCounter()
// DeleteShardMetrics deletes shard metrics from registry.
DeleteShardMetrics()
// SetContainerObjectsCount sets container object count.
SetContainerObjectsCount(cnrID string, objectType string, value uint64)
// IncContainerObjectsCount increments container object count.
@ -57,9 +51,6 @@ func (noopMetrics) AddToPayloadSize(int64) {}
func (noopMetrics) IncObjectCounter(string) {}
func (noopMetrics) SetShardID(string) {}
func (noopMetrics) SetMode(mode.Mode) {}
func (noopMetrics) IncErrorCounter() {}
func (noopMetrics) ClearErrorCounter() {}
func (noopMetrics) DeleteShardMetrics() {}
func (noopMetrics) SetContainerObjectsCount(string, string, uint64) {}
func (noopMetrics) IncContainerObjectsCount(string, string) {}
func (noopMetrics) SubContainerObjectsCount(string, string, uint64) {}

View file

@ -494,18 +494,6 @@ func (s *Shard) setContainerObjectsCount(cnr string, typ string, v uint64) {
}
}
func (s *Shard) IncErrorCounter() {
s.cfg.metricsWriter.IncErrorCounter()
}
func (s *Shard) ClearErrorCounter() {
s.cfg.metricsWriter.ClearErrorCounter()
}
func (s *Shard) DeleteShardMetrics() {
s.cfg.metricsWriter.DeleteShardMetrics()
}
func (s *Shard) SetEvacuationInProgress(val bool) {
s.m.Lock()
defer s.m.Unlock()