From fcc4f4b1425d5bcc03e9aab8ec799a10b1728c5e Mon Sep 17 00:00:00 2001 From: Dhruv Dhruv Date: Thu, 3 Oct 2024 08:53:53 +0000 Subject: [PATCH] feat: [CDE-364]: Adding checks and logging for active time calculation during instance update. (#2767) * feat: [CDE-364]: Adding checks and logging for active time calculation during instance update. --- app/store/database/gitspace_instance.go | 35 +++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/app/store/database/gitspace_instance.go b/app/store/database/gitspace_instance.go index cae165dbc..6563293d4 100644 --- a/app/store/database/gitspace_instance.go +++ b/app/store/database/gitspace_instance.go @@ -30,6 +30,7 @@ import ( "github.com/guregu/null" "github.com/jmoiron/sqlx" "github.com/pkg/errors" + "github.com/rs/zerolog/log" ) var _ store.GitspaceInstanceStore = (*gitspaceInstanceStore)(nil) @@ -230,6 +231,7 @@ func (g gitspaceInstanceStore) Update( ctx context.Context, gitspaceInstance *types.GitspaceInstance, ) error { + validateActiveTimeDetails(gitspaceInstance) stmt := database.Builder. Update(gitspaceInstanceTable). Set("gits_state", gitspaceInstance.State). @@ -396,3 +398,36 @@ func (g gitspaceInstanceStore) mapToGitspaceInstances( } return res, nil } + +func validateActiveTimeDetails(gitspaceInstance *types.GitspaceInstance) { + if (gitspaceInstance.State == enum.GitspaceInstanceStateStarting || + gitspaceInstance.State == enum.GitspaceInstanceStateUninitialized) && + (gitspaceInstance.ActiveTimeStarted != nil || + gitspaceInstance.ActiveTimeEnded != nil || + gitspaceInstance.TotalTimeUsed != 0) { + log.Warn().Msgf("instance has incorrect active time, details: identifier %s state %s active time start "+ + "%d active time end %d total time used %d", gitspaceInstance.Identifier, gitspaceInstance.State, + gitspaceInstance.ActiveTimeStarted, gitspaceInstance.ActiveTimeEnded, gitspaceInstance.TotalTimeUsed) + } + if (gitspaceInstance.State == enum.GitspaceInstanceStateRunning) && + (gitspaceInstance.ActiveTimeStarted == nil || + gitspaceInstance.ActiveTimeEnded != nil || + gitspaceInstance.TotalTimeUsed != 0) { + log.Warn().Msgf( + "instance is missing active time start or has incorrect end/total timestamps, details: "+ + " identifier %s state %s active time start %d active time end %d total time used %d", + gitspaceInstance.Identifier, gitspaceInstance.State, gitspaceInstance.ActiveTimeStarted, + gitspaceInstance.ActiveTimeEnded, gitspaceInstance.TotalTimeUsed) + } + if (gitspaceInstance.State == enum.GitspaceInstanceStateDeleted || + gitspaceInstance.State == enum.GitspaceInstanceStateStopping || + gitspaceInstance.State == enum.GitspaceInstanceStateError) && + (gitspaceInstance.ActiveTimeStarted == nil || + gitspaceInstance.ActiveTimeEnded == nil || + gitspaceInstance.TotalTimeUsed == 0) { + log.Warn().Msgf("instance is missing active time start/end/total timestamp, details: "+ + " identifier %s state %s active time start %d active time end %d total time used %d", + gitspaceInstance.Identifier, gitspaceInstance.State, gitspaceInstance.ActiveTimeStarted, + gitspaceInstance.ActiveTimeEnded, gitspaceInstance.TotalTimeUsed) + } +}