From 973a44ee07374bd85a2dcd19f47a6f7fed2b24fc Mon Sep 17 00:00:00 2001 From: yusing Date: Wed, 16 Apr 2025 15:14:41 +0800 Subject: [PATCH] fix: version parsing --- agent/pkg/agent/config.go | 16 ++++------------ pkg/version.go | 6 +++--- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/agent/pkg/agent/config.go b/agent/pkg/agent/config.go index 673994a..4a5b34c 100644 --- a/agent/pkg/agent/config.go +++ b/agent/pkg/agent/config.go @@ -81,14 +81,6 @@ func (cfg *AgentConfig) Parse(addr string) error { return nil } -func withoutBuildTime(version string) string { - return strings.Split(version, "-")[0] -} - -func checkVersion(a, b string) bool { - return withoutBuildTime(a) == withoutBuildTime(b) -} - func (cfg *AgentConfig) InitWithCerts(ctx context.Context, ca, crt, key []byte) error { clientCert, err := tls.X509KeyPair(crt, key) if err != nil { @@ -120,10 +112,10 @@ func (cfg *AgentConfig) InitWithCerts(ctx context.Context, ca, crt, key []byte) return err } - versionStr := string(version) - // skip version check for dev versions - if strings.HasPrefix(versionStr, "v") && !checkVersion(versionStr, pkg.GetVersion().String()) { - return gperr.Errorf("agent version mismatch: server: %s, agent: %s", pkg.GetVersion(), versionStr) + agentVer := pkg.ParseVersion(string(version)) + serverVer := pkg.GetVersion() + if !agentVer.IsEqual(serverVer) { + return gperr.Errorf("agent version mismatch: server: %s, agent: %s", serverVer, agentVer) } // get agent name diff --git a/pkg/version.go b/pkg/version.go index a80be0b..7d8e0a5 100644 --- a/pkg/version.go +++ b/pkg/version.go @@ -20,7 +20,7 @@ func GetLastVersion() Version { } func init() { - currentVersion = parseVersion(version) + currentVersion = ParseVersion(version) // ignore errors versionFile := filepath.Join(common.DataDir, "version") @@ -28,7 +28,7 @@ func init() { f, err := os.OpenFile(versionFile, os.O_RDWR|os.O_CREATE, 0o644) if err == nil { _, err = fmt.Fscanf(f, "%s", &lastVersionStr) - lastVersion = parseVersion(lastVersionStr) + lastVersion = ParseVersion(lastVersionStr) } if err != nil && !os.IsNotExist(err) { logging.Warn().Err(err).Msg("failed to read version file") @@ -89,7 +89,7 @@ var ( lastVersion Version ) -func parseVersion(v string) (ver Version) { +func ParseVersion(v string) (ver Version) { if v == "" { return }