Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSami Hiltunen <shiltunen@gitlab.com>2022-04-06 15:36:53 +0300
committerSami Hiltunen <shiltunen@gitlab.com>2022-04-06 16:13:50 +0300
commit588054fd852efa458d1117816d72e9bf5e43c234 (patch)
treeee90559e86be5b02a4f9d1b10f28341467780cab
parent8f65727d4e41803776f2efd34fe3451420d0ccc2 (diff)
Expose last verification time in 'praefect metadata'smh-verify-metadata-output
Administrator's may want to know when Praefect has last verified a replica. This commit exposes that information via the 'praefect metadata' command. Changelog: added
-rw-r--r--cmd/praefect/subcmd_metadata.go6
-rw-r--r--cmd/praefect/subcmd_metadata_test.go9
-rw-r--r--internal/praefect/service/info/metadata.go7
3 files changed, 22 insertions, 0 deletions
diff --git a/cmd/praefect/subcmd_metadata.go b/cmd/praefect/subcmd_metadata.go
index e913a0eec..3cc9b8292 100644
--- a/cmd/praefect/subcmd_metadata.go
+++ b/cmd/praefect/subcmd_metadata.go
@@ -99,9 +99,15 @@ func (cmd *metadataSubcommand) Exec(flags *flag.FlagSet, cfg config.Config) erro
generationText = fmt.Sprintf("%d, behind by %d changes", replica.Generation, metadata.Generation-replica.Generation)
}
+ verifiedAt := "unverified"
+ if replica.VerifiedAt.IsValid() {
+ verifiedAt = replica.VerifiedAt.AsTime().String()
+ }
+
cmd.println(" Generation: %s", generationText)
cmd.println(" Healthy: %v", replica.Healthy)
cmd.println(" Valid Primary: %v", replica.ValidPrimary)
+ cmd.println(" Verified At: %s", verifiedAt)
}
return nil
}
diff --git a/cmd/praefect/subcmd_metadata_test.go b/cmd/praefect/subcmd_metadata_test.go
index ee433fa87..dbca8c27c 100644
--- a/cmd/praefect/subcmd_metadata_test.go
+++ b/cmd/praefect/subcmd_metadata_test.go
@@ -5,6 +5,7 @@ import (
"errors"
"fmt"
"testing"
+ "time"
"github.com/stretchr/testify/require"
"gitlab.com/gitlab-org/gitaly/v14/internal/praefect/config"
@@ -33,6 +34,11 @@ func TestMetadataSubcommand(t *testing.T) {
require.NoError(t, rs.CreateRepository(ctx, 1, "virtual-storage", "relative-path", "replica-path", "primary", []string{"secondary-1"}, []string{"secondary-2"}, true, true))
require.NoError(t, rs.IncrementGeneration(ctx, 1, "primary", nil))
+ _, err := tx.ExecContext(ctx, "UPDATE storage_repositories SET verified_at = $1 WHERE storage = 'primary'",
+ time.Date(2021, time.April, 1, 10, 4, 20, 64, time.UTC),
+ )
+ require.NoError(t, err)
+
ln, clean := listenAndServe(t, []svcRegistrar{
registerPraefectInfoServer(info.NewServer(config.Config{}, rs, nil, nil, nil)),
})
@@ -105,16 +111,19 @@ Replicas:
Generation: 1, fully up to date
Healthy: true
Valid Primary: true
+ Verified At: 2021-04-01 10:04:20 +0000 UTC
- Storage: "secondary-1"
Assigned: true
Generation: 0, behind by 1 changes
Healthy: true
Valid Primary: false
+ Verified At: unverified
- Storage: "secondary-2"
Assigned: true
Generation: replica not yet created
Healthy: false
Valid Primary: false
+ Verified At: unverified
`, stdout.String())
})
}
diff --git a/internal/praefect/service/info/metadata.go b/internal/praefect/service/info/metadata.go
index d469b94c1..24c716224 100644
--- a/internal/praefect/service/info/metadata.go
+++ b/internal/praefect/service/info/metadata.go
@@ -8,6 +8,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v14/internal/praefect/commonerr"
"gitlab.com/gitlab-org/gitaly/v14/internal/praefect/datastore"
"gitlab.com/gitlab-org/gitaly/v14/proto/go/gitalypb"
+ "google.golang.org/protobuf/types/known/timestamppb"
)
// GetRepositoryMetadata returns the cluster metadata for a repository.
@@ -37,12 +38,18 @@ func (s *Server) GetRepositoryMetadata(ctx context.Context, req *gitalypb.GetRep
replicas := make([]*gitalypb.GetRepositoryMetadataResponse_Replica, 0, len(metadata.Replicas))
for _, replica := range metadata.Replicas {
+ var verifiedAt *timestamppb.Timestamp
+ if !replica.VerifiedAt.IsZero() {
+ verifiedAt = timestamppb.New(replica.VerifiedAt)
+ }
+
replicas = append(replicas, &gitalypb.GetRepositoryMetadataResponse_Replica{
Storage: replica.Storage,
Assigned: replica.Assigned,
Generation: replica.Generation,
Healthy: replica.Healthy,
ValidPrimary: replica.ValidPrimary,
+ VerifiedAt: verifiedAt,
})
}