diff --git a/.golangci.yml b/.golangci.yml index 09e3360a538..f2ea9caef51 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -24,6 +24,7 @@ linters: - godox # we sometimes leave TODOS right in the code - gomoddirectives # we use replace directives - gomodguard # deprecated + - mnd # too annoying - nlreturn # too annoying - paralleltest - protogetter # we need direct access to proto fields diff --git a/agent/agentlocal/agent_local.go b/agent/agentlocal/agent_local.go index 470b485fbda..7d5b6bc994b 100644 --- a/agent/agentlocal/agent_local.go +++ b/agent/agentlocal/agent_local.go @@ -114,15 +114,12 @@ func (s *Server) Run(ctx context.Context, reloadCh chan bool) { // l is closed by runGRPCServer var wg sync.WaitGroup - wg.Add(2) //nolint:mnd - go func() { - defer wg.Done() + wg.Go(func() { s.runGRPCServer(serverCtx, l) - }() - go func() { - defer wg.Done() + }) + wg.Go(func() { s.runJSONServer(serverCtx, l.Addr().String()) - }() + }) select { case <-s.reload: diff --git a/agent/agents/mongodb/mongolog/internal/mongolog.go b/agent/agents/mongodb/mongolog/internal/mongolog.go index 1f9a255aeaa..ef65b715991 100644 --- a/agent/agents/mongodb/mongolog/internal/mongolog.go +++ b/agent/agents/mongodb/mongolog/internal/mongolog.go @@ -121,7 +121,7 @@ func (l *Mongolog) Start(ctx context.Context) error { // start a goroutine and Add() it to WaitGroup // so we could later Wait() for it to finish l.wg = &sync.WaitGroup{} - l.wg.Add(2) //nolint:mnd + l.wg.Add(2) // create ready sync.Cond so we could know when goroutine actually started getting data from db ready := sync.NewCond(&sync.Mutex{}) diff --git a/agent/agents/mongodb/realtimeanalytics/mongodb.go b/agent/agents/mongodb/realtimeanalytics/mongodb.go index 4b903b62f49..807518cc8d6 100644 --- a/agent/agents/mongodb/realtimeanalytics/mongodb.go +++ b/agent/agents/mongodb/realtimeanalytics/mongodb.go @@ -189,7 +189,7 @@ func (m *MongoDBRTA) collectCurrentOps(ctx context.Context) ([]*rtav1.QueryData, // Buffered channel to store results from goroutines(parsers) // and avoid blocking when sending results to the channel. - resultsChan := make(chan *rtav1.QueryData, 10) //nolint:mnd + resultsChan := make(chan *rtav1.QueryData, 10) for cur.Next(ctx) { // check if the context is done to avoid unnecessary processing @@ -295,7 +295,7 @@ func buildCurrentOpsPipeline() mongo.Pipeline { // Get operations/commands that are active. bson.D{{Key: "active", Value: true}}, // Get operations/commands that have execution duration => 0.01s. - bson.D{{Key: "microsecs_running", Value: bson.D{{Key: "$gte", Value: 10_000}}}}, //nolint:mnd + bson.D{{Key: "microsecs_running", Value: bson.D{{Key: "$gte", Value: 10_000}}}}, // Exclude operations from internal MongoDB tools. bson.D{{Key: "desc", Value: bson.D{{Key: "$nin", Value: bson.A{"Checkpointer", "JournalFlusher"}}}}}, // Exclude operations from RTA agent itself. diff --git a/agent/agents/mongodb/realtimeanalytics/parser/parser.go b/agent/agents/mongodb/realtimeanalytics/parser/parser.go index fa646a13999..d8391d26367 100644 --- a/agent/agents/mongodb/realtimeanalytics/parser/parser.go +++ b/agent/agents/mongodb/realtimeanalytics/parser/parser.go @@ -62,7 +62,7 @@ func parseGenericFields(raw bson.Raw, q *rtav1.QueryData) { d := time.Duration(usRunning) * time.Microsecond // Round duration to 0.01s to avoid too much precision, // because it doesn't make sense to have microsecond precision in query execution time. - q.QueryExecutionDuration = durationpb.New(d.Round(10 * time.Millisecond)) //nolint:mnd + q.QueryExecutionDuration = durationpb.New(d.Round(10 * time.Millisecond)) } q.ClientAddress, _ = raw.Lookup("client").StringValueOK() diff --git a/agent/agents/postgres/pgstatmonitor/pgstatmonitor.go b/agent/agents/postgres/pgstatmonitor/pgstatmonitor.go index 4b16bae0f8f..a277626d0ec 100644 --- a/agent/agents/postgres/pgstatmonitor/pgstatmonitor.go +++ b/agent/agents/postgres/pgstatmonitor/pgstatmonitor.go @@ -189,7 +189,7 @@ func getPGVersion(q *reform.Querier) (pgVersion, error) { return pgVersion(parsed), err } -//nolint:mnd,cyclop +//nolint:cyclop func getPGMonitorVersion(q *reform.Querier) (pgStatMonitorVersion, pgStatMonitorPrerelease, error) { var result string err := q.QueryRow(fmt.Sprintf("SELECT /* %s */ pg_stat_monitor_version()", queryTag)).Scan(&result) diff --git a/agent/agents/postgres/pgstatmonitor/pgstatmonitor_models.go b/agent/agents/postgres/pgstatmonitor/pgstatmonitor_models.go index af06d271da8..c60320bc588 100644 --- a/agent/agents/postgres/pgstatmonitor/pgstatmonitor_models.go +++ b/agent/agents/postgres/pgstatmonitor/pgstatmonitor_models.go @@ -301,7 +301,7 @@ func (v *pgStatMonitorAllViewType) NewStruct() reform.Struct { //nolint:ireturn // String returns a string representation of this struct or record. func (s pgStatMonitor) String() string { - res := make([]string, 54) //nolint:mnd + res := make([]string, 54) res[0] = "Bucket: " + reform.Inspect(s.Bucket, true) res[1] = "BucketStartTime: " + reform.Inspect(s.BucketStartTime, true) res[2] = "UserID: " + reform.Inspect(s.UserID, true) diff --git a/agent/client/channel/rta_channel.go b/agent/client/channel/rta_channel.go index 2f40d7522b4..a0539f79c98 100644 --- a/agent/client/channel/rta_channel.go +++ b/agent/client/channel/rta_channel.go @@ -143,7 +143,7 @@ func (c *RTAChannel) Send(msg *rtav1.CollectRequest) { // Do not waste resources in case debug level is not enabled. if c.l.Logger.IsLevelEnabled(logrus.DebugLevel) { // do not use default compact representation for large/complex messages - if size := proto.Size(msg); size < 100 { //nolint:mnd + if size := proto.Size(msg); size < 100 { c.l.Debugf("Sending message (%d bytes): %s.", size, msg) } else { c.l.Debugf("Sending message (%d bytes):\n%s\n", size, prototext.Format(msg)) diff --git a/agent/config/config.go b/agent/config/config.go index 06d26e85a44..e203b0989e7 100644 --- a/agent/config/config.go +++ b/agent/config/config.go @@ -586,7 +586,7 @@ func SaveToFile(path string, cfg *Config, comment string) error { } } - return os.WriteFile(path, res, 0o640) //nolint:gosec,mnd + return os.WriteFile(path, res, 0o640) //nolint:gosec } // IsWritable checks if specified path is writable. diff --git a/agent/utils/templates/template.go b/agent/utils/templates/template.go index af36eaf3acb..f0a32f7ae57 100644 --- a/agent/utils/templates/template.go +++ b/agent/utils/templates/template.go @@ -68,7 +68,7 @@ func (tr *TemplateRenderer) RenderFiles(templateParams map[string]any) (map[stri if err != nil { return nil, err } - err = os.MkdirAll(tr.TempDir, 0o700) //nolint:mnd + err = os.MkdirAll(tr.TempDir, 0o700) if err != nil { return nil, err } @@ -93,7 +93,7 @@ func (tr *TemplateRenderer) RenderFiles(templateParams map[string]any) (map[stri } path := filepath.Join(tr.TempDir, name) - err = os.WriteFile(path, b, 0o600) //nolint:mnd + err = os.WriteFile(path, b, 0o600) if err != nil { return nil, err } diff --git a/managed/models/agent_helpers.go b/managed/models/agent_helpers.go index 82a0697de55..bdc43f3ea5a 100644 --- a/managed/models/agent_helpers.go +++ b/managed/models/agent_helpers.go @@ -374,7 +374,7 @@ func FindDBConfigForService(q *reform.Querier, serviceID string) (*DBConfig, err default: return nil, status.Error(codes.FailedPrecondition, "Unsupported service.") } - p := strings.Join(q.Placeholders(2, len(agentTypes)), ", ") //nolint:mnd + p := strings.Join(q.Placeholders(2, len(agentTypes)), ", ") tail := fmt.Sprintf("WHERE service_id = $1 AND agent_type IN (%s) ORDER BY agent_id", p) args := make([]any, len(agentTypes)+1) @@ -985,7 +985,7 @@ func CreateAgent(q *reform.Querier, agentType AgentType, params *CreateAgentPara case RTAMongoDBAgentType: row.RTAOptions = RTAOptions{ // default value - CollectInterval: new(2 * time.Second), //nolint:mnd + CollectInterval: new(2 * time.Second), } // RTA options row.RTAOptions.Merge(¶ms.RTAOptions) diff --git a/managed/models/database.go b/managed/models/database.go index 739e370fa8c..3f0915349c4 100644 --- a/managed/models/database.go +++ b/managed/models/database.go @@ -1223,8 +1223,8 @@ func OpenDB(params SetupDBParams) (*sql.DB, error) { } db.SetConnMaxLifetime(0) - db.SetMaxIdleConns(5) //nolint:mnd - db.SetMaxOpenConns(10) //nolint:mnd + db.SetMaxIdleConns(5) + db.SetMaxOpenConns(10) return db, nil } @@ -1704,7 +1704,7 @@ func setupPMMServerAgents(q *reform.Querier, params SetupDBParams) error { // parsePGAddress parses PostgreSQL address into address:port; if no port specified returns default port number. func parsePGAddress(address string) (string, uint16, error) { if !strings.Contains(address, ":") { - return address, 5432, nil //nolint:mnd + return address, 5432, nil } address, portStr, err := net.SplitHostPort(address) if err != nil { diff --git a/managed/models/models.go b/managed/models/models.go index 034fcb7a6d6..70234ec62e2 100644 --- a/managed/models/models.go +++ b/managed/models/models.go @@ -56,7 +56,7 @@ const ( // MergeLabels merges unified labels of Node, Service, and Agent (each can be nil). func MergeLabels(node *Node, service *Service, agent *Agent) (map[string]string, error) { - res := make(map[string]string, 16) //nolint:mnd + res := make(map[string]string, 16) if node != nil { labels, err := node.UnifiedLabels() diff --git a/managed/models/postgresql_version.go b/managed/models/postgresql_version.go index cac8a8e2287..196d765c3e8 100644 --- a/managed/models/postgresql_version.go +++ b/managed/models/postgresql_version.go @@ -48,7 +48,7 @@ func GetPostgreSQLVersion(ctx context.Context, q reform.DBTXContext) (PostgreSQL } text := postgresDBRegexp.FindStringSubmatch(version) - if len(text) < 2 { //nolint:mnd + if len(text) < 2 { return PostgreSQLVersion{}, errors.New("postgresql version not found") } diff --git a/managed/models/settings.go b/managed/models/settings.go index d76fc4552cf..004dc589e74 100644 --- a/managed/models/settings.go +++ b/managed/models/settings.go @@ -203,17 +203,17 @@ func (s *Settings) fillDefaults() { // no default for Telemetry UUID - it set by telemetry service if s.MetricsResolutions.HR == 0 { - s.MetricsResolutions.HR = 5 * time.Second //nolint:mnd + s.MetricsResolutions.HR = 5 * time.Second } if s.MetricsResolutions.MR == 0 { - s.MetricsResolutions.MR = 10 * time.Second //nolint:mnd + s.MetricsResolutions.MR = 10 * time.Second } if s.MetricsResolutions.LR == 0 { - s.MetricsResolutions.LR = 60 * time.Second //nolint:mnd + s.MetricsResolutions.LR = 60 * time.Second } if s.DataRetention == 0 { - s.DataRetention = 30 * 24 * time.Hour //nolint:mnd + s.DataRetention = 30 * 24 * time.Hour } if len(s.AWSPartitions) == 0 { @@ -221,14 +221,14 @@ func (s *Settings) fillDefaults() { } if s.SaaS.AdvisorRunIntervals.RareInterval == 0 { - s.SaaS.AdvisorRunIntervals.RareInterval = 78 * time.Hour //nolint:mnd + s.SaaS.AdvisorRunIntervals.RareInterval = 78 * time.Hour } if s.SaaS.AdvisorRunIntervals.StandardInterval == 0 { - s.SaaS.AdvisorRunIntervals.StandardInterval = 24 * time.Hour //nolint:mnd + s.SaaS.AdvisorRunIntervals.StandardInterval = 24 * time.Hour } if s.SaaS.AdvisorRunIntervals.FrequentInterval == 0 { - s.SaaS.AdvisorRunIntervals.FrequentInterval = 4 * time.Hour //nolint:mnd + s.SaaS.AdvisorRunIntervals.FrequentInterval = 4 * time.Hour } } diff --git a/managed/pi/alert/parameter.go b/managed/pi/alert/parameter.go index bb2a6a54863..5fab26ed0b8 100644 --- a/managed/pi/alert/parameter.go +++ b/managed/pi/alert/parameter.go @@ -171,7 +171,7 @@ func (p *Parameter) validateRange() error { return nil case Float: - if len(p.Range) != 2 { //nolint:mnd + if len(p.Range) != 2 { return fmt.Errorf("range should be empty or have two elements, but it has %d elements", len(p.Range)) } diff --git a/managed/pi/check/check.go b/managed/pi/check/check.go index ca25b468a1a..e29a9d162a3 100644 --- a/managed/pi/check/check.go +++ b/managed/pi/check/check.go @@ -38,8 +38,8 @@ var nameRE = regexp.MustCompile(`^[a-zA-Z_][a-zA-Z0-9_]*$`) // Verify checks signature of passed data with provided public key and // returns error in case of any problem. func Verify(data []byte, publicKey, sig string) error { - lines := strings.SplitN(sig, "\n", 4) //nolint:mnd - if len(lines) < 4 { //nolint:mnd + lines := strings.SplitN(sig, "\n", 4) + if len(lines) < 4 { return errors.New("incomplete signature") } @@ -71,7 +71,7 @@ func Verify(data []byte, publicKey, sig string) error { } // For pre-hashed signature get data hash. - if sAlg[1] == 0x44 { //nolint:mnd + if sAlg[1] == 0x44 { h, _ := blake2b.New512(nil) h.Write(data) data = h.Sum(nil) @@ -298,7 +298,7 @@ func (c *Check) GetFamily() Family { case MetricsInstant, MetricsRange, ClickHouseSelect: return "" // Unsupported query types for V1, check is invalid } - case 2: //nolint:mnd + case 2: return c.Family } @@ -342,7 +342,7 @@ func (c *Check) Validate() error { switch c.Version { case 1: return c.validateV1() - case 2: //nolint:mnd + case 2: return c.validateV2() default: return fmt.Errorf("unexpected version %d", c.Version) diff --git a/managed/services/agents/mongodb.go b/managed/services/agents/mongodb.go index d6d607432a6..8706fe005ce 100644 --- a/managed/services/agents/mongodb.go +++ b/managed/services/agents/mongodb.go @@ -132,7 +132,7 @@ func getArgs(exporter *models.Agent, tdp *models.DelimiterPair, listenAddress st } } - collstatsLimit := int32(200) //nolint:mnd // default limit + collstatsLimit := int32(200) // default limit if exporter.MongoDBOptions.CollectionsLimit != -1 { collstatsLimit = exporter.MongoDBOptions.CollectionsLimit } diff --git a/managed/services/agents/registry.go b/managed/services/agents/registry.go index e60707d18b6..627f570bed7 100644 --- a/managed/services/agents/registry.go +++ b/managed/services/agents/registry.go @@ -138,14 +138,14 @@ func NewRegistry(db *reform.DB, vmParams victoriaMetricsParams, ha haService) *R Subsystem: prometheusSubsystem, Name: "round_trip_seconds", Help: "Round-trip time.", - Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001}, //nolint:mnd + Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001}, }), mClockDrift: prom.NewSummary(prom.SummaryOpts{ Namespace: prometheusNamespace, Subsystem: prometheusSubsystem, Name: "clock_drift_seconds", Help: "Clock drift.", - Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001}, //nolint:mnd + Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001}, }), isExternalVM: vmParams.ExternalVM(), @@ -432,7 +432,7 @@ func (r *Registry) ping(ctx context.Context, agent *pmmAgentInfo) error { } roundtrip := time.Since(start) agentTime := resp.(*agentv1.Pong).CurrentTime.AsTime() //nolint:forcetypeassert - clockDrift := agentTime.Sub(start) - roundtrip/2 //nolint:mnd + clockDrift := agentTime.Sub(start) - roundtrip/2 if clockDrift < 0 { clockDrift = -clockDrift } diff --git a/managed/services/agents/state.go b/managed/services/agents/state.go index 8dad8d4dc8b..07150b972d7 100644 --- a/managed/services/agents/state.go +++ b/managed/services/agents/state.go @@ -83,7 +83,7 @@ func (u *StateUpdater) UpdateAgentsState(ctx context.Context) error { return fmt.Errorf("cannot find pmmAgentsIDs for AgentsState update: %w", err) } var wg sync.WaitGroup - limiter := make(chan struct{}, 10) //nolint:mnd + limiter := make(chan struct{}, 10) for _, pmmAgentID := range pmmAgents { wg.Add(1) limiter <- struct{}{} diff --git a/managed/services/alerting/service.go b/managed/services/alerting/service.go index fbed68a9422..b208ab09d62 100644 --- a/managed/services/alerting/service.go +++ b/managed/services/alerting/service.go @@ -706,7 +706,7 @@ func (s *Service) CreateRule(ctx context.Context, req *alerting.CreateRuleReques RefID: "A", DatasourceUID: metricsDatasourceUID, // TODO: https://community.grafana.com/t/grafana-requires-time-range-for-alert-rule-creation-with-instant-promql-quieriy/70919 - RelativeTimeRange: services.RelativeTimeRange{From: 600, To: 0}, //nolint:mnd + RelativeTimeRange: services.RelativeTimeRange{From: 600, To: 0}, Model: services.Model{ Expr: expr, RefID: "A", diff --git a/managed/services/ha/haservice.go b/managed/services/ha/haservice.go index 19de9cd0184..4ce23f52ca3 100644 --- a/managed/services/ha/haservice.go +++ b/managed/services/ha/haservice.go @@ -138,7 +138,7 @@ func (w *memberlistLogWriter) Write(p []byte) (int, error) { // Parse memberlist log format: "2025/12/22 21:43:27 [DEBUG|INFO|WARN|ERR] message" matches := w.logRegex.FindStringSubmatch(msg) - if len(matches) == 3 { //nolint:mnd + if len(matches) == 3 { level := strings.ToLower(matches[1]) message := matches[2] diff --git a/managed/services/nomad/nomad.go b/managed/services/nomad/nomad.go index 1c61765c85f..895000782d5 100644 --- a/managed/services/nomad/nomad.go +++ b/managed/services/nomad/nomad.go @@ -61,7 +61,7 @@ type Nomad struct { // New creates a new Nomad client. func New(db *reform.DB, clientConfig *models.NomadClient) (*Nomad, error) { - err := os.MkdirAll(pathToCerts, 0o750) //nolint:mnd + err := os.MkdirAll(pathToCerts, 0o750) if err != nil { return nil, err } diff --git a/managed/services/realtimeanalytics/service.go b/managed/services/realtimeanalytics/service.go index 0414f9b6558..5df896f946f 100644 --- a/managed/services/realtimeanalytics/service.go +++ b/managed/services/realtimeanalytics/service.go @@ -558,7 +558,7 @@ func (s *Service) Collect(stream grpc.ClientStreamingServer[rtav1.CollectRequest if l.Logger.IsLevelEnabled(logrus.DebugLevel) { // do not use default compact representation for large/complex messages - if size := proto.Size(msg); size < 100 { //nolint:mnd + if size := proto.Size(msg); size < 100 { l.Debugf("Received message (%d bytes): %s.", size, msg) } else { l.Debugf("Received message (%d bytes):\n%s\n", proto.Size(msg), prototext.Format(msg)) diff --git a/managed/services/realtimeanalytics/store.go b/managed/services/realtimeanalytics/store.go index 082543d9fd8..18e9c5ecaeb 100644 --- a/managed/services/realtimeanalytics/store.go +++ b/managed/services/realtimeanalytics/store.go @@ -113,7 +113,7 @@ func (s *Store) getShard(serviceID string) *shard { // Uses prime multiplier (31) for good distribution hash := uint32(0) for i := range len(serviceID) { - hash = hash*31 + uint32(serviceID[i]) //nolint:mnd + hash = hash*31 + uint32(serviceID[i]) } return s.shards[hash%numShards] diff --git a/managed/services/server/server.go b/managed/services/server/server.go index 199ee2bfed9..be7ca395195 100644 --- a/managed/services/server/server.go +++ b/managed/services/server/server.go @@ -291,13 +291,13 @@ func (s *Server) CheckUpdates(ctx context.Context, req *serverv1.CheckUpdatesReq if v.Installed.BuildTime != nil { // return only date - t := v.Installed.BuildTime.UTC().Truncate(24 * time.Hour) //nolint:mnd + t := v.Installed.BuildTime.UTC().Truncate(24 * time.Hour) res.Installed.Timestamp = timestamppb.New(t) } if v.Latest.DockerImage != "" { // return only date - t := v.Latest.BuildTime.UTC().Truncate(24 * time.Hour) //nolint:mnd + t := v.Latest.BuildTime.UTC().Truncate(24 * time.Hour) res.Latest.Timestamp = timestamppb.New(t) } @@ -708,13 +708,13 @@ func (s *Server) writeSSHKey(sshKey string) error { return fmt.Errorf("failed to lookup OS user %s: %w", username, err) } sshDirPath := path.Join(usr.HomeDir, ".ssh") - err = os.MkdirAll(sshDirPath, 0o700) //nolint:mnd + err = os.MkdirAll(sshDirPath, 0o700) if err != nil { return fmt.Errorf("failed to create SSH dir %s: %w", sshDirPath, err) } keysPath := path.Join(sshDirPath, "authorized_keys") - err = os.WriteFile(keysPath, []byte(sshKey), 0o600) //nolint:mnd + err = os.WriteFile(keysPath, []byte(sshKey), 0o600) if err != nil { return fmt.Errorf("failed to write SSH keys to %s: %w", keysPath, err) } diff --git a/managed/services/supervisord/maintail.go b/managed/services/supervisord/maintail.go index cbc7db1df66..1dd1f62e4cf 100644 --- a/managed/services/supervisord/maintail.go +++ b/managed/services/supervisord/maintail.go @@ -67,8 +67,8 @@ type event struct { // parseEvent returns parsed event from supervisord maintail line, or nil. func parseEvent(line string) *event { - parts := strings.SplitN(line, " ", 4) //nolint:mnd - if len(parts) != 4 { //nolint:mnd + parts := strings.SplitN(line, " ", 4) + if len(parts) != 4 { return nil } diff --git a/managed/services/supervisord/supervisord.go b/managed/services/supervisord/supervisord.go index 2c2d609ad12..33c6e7e518e 100644 --- a/managed/services/supervisord/supervisord.go +++ b/managed/services/supervisord/supervisord.go @@ -458,7 +458,7 @@ func (s *Service) reload(name string) error { func (s *Service) marshalConfig(tmpl *template.Template, settings *models.Settings) ([]byte, error) { clickhouseDatabase := envvars.GetEnv("PMM_CLICKHOUSE_DATABASE", defaultClickhouseDatabase) clickhouseAddr := envvars.GetEnv("PMM_CLICKHOUSE_ADDR", defaultClickhouseAddr) - clickhouseAddrPair := strings.SplitN(clickhouseAddr, ":", 2) //nolint:mnd + clickhouseAddrPair := strings.SplitN(clickhouseAddr, ":", 2) clickhouseUser := envvars.GetEnv("PMM_CLICKHOUSE_USER", defaultClickhouseUser) clickhousePassword := envvars.GetEnv("PMM_CLICKHOUSE_PASSWORD", defaultClickhousePassword) vmSearchDisableCache := envvars.GetEnv("VM_search_disableCache", strconv.FormatBool(!settings.IsVictoriaMetricsCacheEnabled())) @@ -473,7 +473,7 @@ func (s *Service) marshalConfig(tmpl *template.Template, settings *models.Settin templateParams := map[string]any{ "DataRetentionHours": int(settings.DataRetention.Hours()), - "DataRetentionDays": int(settings.DataRetention.Hours() / 24), //nolint:mnd + "DataRetentionDays": int(settings.DataRetention.Hours() / 24), "VMAlertFlags": s.vmParams.VMAlertFlags, "VMSearchDisableCache": vmSearchDisableCache, "VMSearchMaxQueryLen": vmSearchMaxQueryLen, @@ -575,7 +575,7 @@ func (s *Service) saveConfigAndReload(name string, cfg []byte) (bool, error) { restore := oldCfg != nil defer func() { if restore { - err = os.WriteFile(path, oldCfg, 0o664) //nolint:gosec,mnd + err = os.WriteFile(path, oldCfg, 0o664) //nolint:gosec if err != nil { s.l.Errorf("Failed to restore: %v.", err) } @@ -587,7 +587,7 @@ func (s *Service) saveConfigAndReload(name string, cfg []byte) (bool, error) { }() // write and reload - err = os.WriteFile(path, cfg, 0o664) //nolint:gosec,mnd + err = os.WriteFile(path, cfg, 0o664) //nolint:gosec if err != nil { return false, err } diff --git a/managed/services/victoriametrics/prometheus.go b/managed/services/victoriametrics/prometheus.go index df635de059e..409d9dee9ab 100644 --- a/managed/services/victoriametrics/prometheus.go +++ b/managed/services/victoriametrics/prometheus.go @@ -269,7 +269,7 @@ func AddScrapeConfigs(l *logrus.Entry, cfg *config.Config, q *reform.Querier, // // AddInternalServicesToScrape adds internal services metrics to scrape targets. func addInternalServicesToScrape(s models.MetricsResolutions, svc *Service, pmmServerNodeName string) []*config.ScrapeConfig { - cfg := make([]*config.ScrapeConfig, 0, 4) //nolint:mnd + cfg := make([]*config.ScrapeConfig, 0, 4) cfg = append( cfg, scrapeConfigForGrafana(s.MR, pmmServerNodeName), diff --git a/managed/services/victoriametrics/scrape_configs.go b/managed/services/victoriametrics/scrape_configs.go index 8b5cbd135a0..24dd5102cef 100644 --- a/managed/services/victoriametrics/scrape_configs.go +++ b/managed/services/victoriametrics/scrape_configs.go @@ -43,7 +43,7 @@ func scrapeTimeout(interval time.Duration) config.Duration { case interval <= 2*time.Second: return config.Duration(time.Second) default: - return config.Duration(float64(interval) * 0.9) //nolint:mnd + return config.Duration(float64(interval) * 0.9) } } @@ -550,7 +550,7 @@ func scrapeConfigsForRDSExporter(params []*scrapeConfigParams) []*config.ScrapeC } sort.Strings(hostports) - r := make([]*config.ScrapeConfig, 0, len(hostports)*2) //nolint:mnd + r := make([]*config.ScrapeConfig, 0, len(hostports)*2) for _, hostport := range hostports { metricsResolutions := hostportMap[hostport] mr := scrapeConfigForRDSExporter("mr", metricsResolutions.MR, hostport, "/enhanced") diff --git a/managed/services/victoriametrics/victoriametrics.go b/managed/services/victoriametrics/victoriametrics.go index 9703768c106..95596b5eb4f 100644 --- a/managed/services/victoriametrics/victoriametrics.go +++ b/managed/services/victoriametrics/victoriametrics.go @@ -293,7 +293,7 @@ func (svc *Service) validateConfig(ctx context.Context, cfg []byte) error { return err } - args := make([]string, 0, 4) //nolint:mnd + args := make([]string, 0, 4) args = append(args, "-promscrape.config.dryRun=true", "-promscrape.config", f.Name()) cmd := exec.CommandContext(ctx, "victoriametrics", args...) //nolint:gosec pdeathsig.Set(cmd, unix.SIGKILL) @@ -302,7 +302,7 @@ func (svc *Service) validateConfig(ctx context.Context, cfg []byte) error { if err != nil { svc.l.Errorf("%s", b) s := string(b) - if m := checkFailedRE.FindStringSubmatch(s); len(m) == 2 { //nolint:mnd + if m := checkFailedRE.FindStringSubmatch(s); len(m) == 2 { return status.Error(codes.Aborted, m[1]) } @@ -317,7 +317,7 @@ func (svc *Service) validateConfig(ctx context.Context, cfg []byte) error { b, err = cmd.CombinedOutput() if err != nil { s := string(b) - if m := checkFailedRE.FindStringSubmatch(s); len(m) == 2 { //nolint:mnd + if m := checkFailedRE.FindStringSubmatch(s); len(m) == 2 { svc.l.Warnf("VictoriaMetrics scrape configuration contains unsupported params: %s", m[1]) } else { svc.l.Warnf("VictoriaMetrics scrape configuration contains unsupported params: %s", b) diff --git a/managed/utils/envvars/parser.go b/managed/utils/envvars/parser.go index fb78164b65a..4b5a97c1ee8 100644 --- a/managed/utils/envvars/parser.go +++ b/managed/utils/envvars/parser.go @@ -74,9 +74,9 @@ func ParseEnvVars(envs []string) (*models.ChangeSettingsParams, []error, []strin var warns []string for _, env := range envs { - p := strings.SplitN(env, "=", 2) //nolint:mnd + p := strings.SplitN(env, "=", 2) - if len(p) != 2 { //nolint:mnd + if len(p) != 2 { errs = append(errs, fmt.Errorf("failed to parse environment variable %q", env)) continue } diff --git a/managed/utils/testdb/db.go b/managed/utils/testdb/db.go index a5d7a55d57c..5975f1350f7 100644 --- a/managed/utils/testdb/db.go +++ b/managed/utils/testdb/db.go @@ -89,7 +89,7 @@ func SetupDB(tb testing.TB, db *sql.DB, setupFixtures models.SetupFixturesMode, // Uncomment to see all setup queries: // Logf: tb.Logf, Address: models.DefaultPostgreSQLAddr, - Name: newName(11), //nolint:mnd + Name: newName(11), Username: username, Password: postgresPassword(), SetupFixtures: setupFixtures, diff --git a/managed/utils/validators/alerting_rules.go b/managed/utils/validators/alerting_rules.go index a3977c51ae5..759a6c253ec 100644 --- a/managed/utils/validators/alerting_rules.go +++ b/managed/utils/validators/alerting_rules.go @@ -51,12 +51,12 @@ func ValidateAlertingRules(ctx context.Context, rules string) error { tempFile.Close() //nolint:errcheck defer os.Remove(tempFile.Name()) //nolint:errcheck - err = os.WriteFile(tempFile.Name(), []byte(rules), 0o644) //nolint:gosec,mnd + err = os.WriteFile(tempFile.Name(), []byte(rules), 0o644) //nolint:gosec if err != nil { return fmt.Errorf("alerting rule validation failed: %w", err) } - timeoutCtx, cancel := context.WithTimeout(ctx, 3*time.Second) //nolint:mnd + timeoutCtx, cancel := context.WithTimeout(ctx, 3*time.Second) defer cancel() cmd := exec.CommandContext(timeoutCtx, "vmalert", "-loggerLevel", "WARN", "-dryRun", "-rule", tempFile.Name()) //nolint:gosec diff --git a/qan-api2/main.go b/qan-api2/main.go index 48eb71efd16..962773da054 100644 --- a/qan-api2/main.go +++ b/qan-api2/main.go @@ -85,7 +85,7 @@ func runGRPCServer(ctx context.Context, db *sqlx.DB, mbm *models.MetricsBucket, // Do not increase that value. If larger requests are required (there are errors in logs), // implement request slicing on pmm-managed side: // send B/N requests with N buckets in each instead of 1 huge request with B buckets. - grpc.MaxRecvMsgSize(20*1024*1024), //nolint:mnd + grpc.MaxRecvMsgSize(20*1024*1024), grpc.UnaryInterceptor(grpc_middleware.ChainUnaryServer( interceptors.Unary, diff --git a/qan-api2/models/reporter.go b/qan-api2/models/reporter.go index 92a1c46c734..fd9520f25f3 100644 --- a/qan-api2/models/reporter.go +++ b/qan-api2/models/reporter.go @@ -319,8 +319,8 @@ func (r *Reporter) SelectSparklines(ctx context.Context, dimensionVal string, group string, column string, isTotal bool, ) ([]*qanpbv1.Point, error) { // Align to minutes - periodStartToSec = periodStartToSec / 60 * 60 //nolint:mnd - periodStartFromSec = periodStartFromSec / 60 * 60 //nolint:mnd + periodStartToSec = periodStartToSec / 60 * 60 + periodStartFromSec = periodStartFromSec / 60 * 60 // If time range is bigger then two hour - amount of sparklines points = 120 to avoid huge data in response. // Otherwise amount of sparklines points is equal to minutes in time range to not mess up calculation. @@ -329,15 +329,15 @@ func (r *Reporter) SelectSparklines(ctx context.Context, dimensionVal string, // reduce amount of point if period less then 2h. if timePeriod < int64(minFullTimeFrame.Seconds()) { // minimum point is 1 minute - amountOfPoints = timePeriod / 60 //nolint:mnd + amountOfPoints = timePeriod / 60 } // how many full minutes we can fit into given amount of points. - minutesInPoint := (periodStartToSec - periodStartFromSec) / 60 / amountOfPoints //nolint:mnd + minutesInPoint := (periodStartToSec - periodStartFromSec) / 60 / amountOfPoints // we need aditional point to show this minutes - remainder := ((periodStartToSec - periodStartFromSec) / 60) % amountOfPoints //nolint:mnd + remainder := ((periodStartToSec - periodStartFromSec) / 60) % amountOfPoints amountOfPoints += remainder / minutesInPoint - timeFrame := minutesInPoint * 60 //nolint:mnd + timeFrame := minutesInPoint * 60 arg := map[string]any{ "dimension_val": dimensionVal, diff --git a/utils/logger/protobuf.go b/utils/logger/protobuf.go index 1b0f88d744a..679fffc92af 100644 --- a/utils/logger/protobuf.go +++ b/utils/logger/protobuf.go @@ -184,7 +184,7 @@ func maskString(s string) string { switch { case n == 0: return s - case n <= 4: //nolint:mnd + case n <= 4: return maskedString default: return s[:2] + maskedString + s[n-2:] @@ -204,7 +204,7 @@ func MaskDSN(s string) string { // Handle scheme://user:pass@host... by keeping scheme:// unchanged. if schemeSep := strings.Index(left, "://"); schemeSep >= 0 { - credStart := schemeSep + 3 //nolint:mnd + credStart := schemeSep + 3 if credStart < len(left) { prefix = left[:credStart] left = left[credStart:]