package main

import (
	"context"
	"os"
	"runtime/debug"

	"git.frostfs.info/TrueCloudLab/frostfs-node/cmd/frostfs-node/config/runtime"
	"git.frostfs.info/TrueCloudLab/frostfs-node/internal/logs"
	"go.uber.org/zap"
)

func setRuntimeParameters(c *cfg) {
	if len(os.Getenv("GOMEMLIMIT")) != 0 {
		// default limit < yaml limit < app env limit < GOMEMLIMIT
		c.log.Warn(context.Background(), logs.RuntimeSoftMemoryDefinedWithGOMEMLIMIT)
		return
	}

	memLimitBytes := runtime.GCMemoryLimitBytes(c.appCfg)
	previous := debug.SetMemoryLimit(memLimitBytes)
	if memLimitBytes != previous {
		c.log.Info(context.Background(), logs.RuntimeSoftMemoryLimitUpdated,
			zap.Int64("new_value", memLimitBytes),
			zap.Int64("old_value", previous))
	}
}