From 48f7d99305d9c13d40fec88cb40bde496996699c Mon Sep 17 00:00:00 2001 From: cskh Date: Tue, 9 May 2023 15:28:52 -0400 Subject: [PATCH] snapshot: some improvments to the snapshot process (#17236) * snapshot: some improvments to the snapshot process Co-authored-by: trujillo-adam <47586768+trujillo-adam@users.noreply.github.com> Co-authored-by: Chris S. Kim --- .changelog/17236.txt | 3 +++ agent/consul/server.go | 2 +- snapshot/snapshot.go | 3 ++- website/content/commands/snapshot/save.mdx | 4 +++- 4 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 .changelog/17236.txt diff --git a/.changelog/17236.txt b/.changelog/17236.txt new file mode 100644 index 0000000000..c824bb7ed7 --- /dev/null +++ b/.changelog/17236.txt @@ -0,0 +1,3 @@ +```release-note:improvement +logging: change snapshot log header from `agent.server.snapshot` to `agent.server.raft.snapshot` +``` diff --git a/agent/consul/server.go b/agent/consul/server.go index 5ea0da7446..52236e8b5d 100644 --- a/agent/consul/server.go +++ b/agent/consul/server.go @@ -1056,7 +1056,7 @@ func (s *Server) setupRaft() error { log = cacheStore // Create the snapshot store. - snapshots, err := raft.NewFileSnapshotStoreWithLogger(path, snapshotsRetained, s.logger.Named("snapshot")) + snapshots, err := raft.NewFileSnapshotStoreWithLogger(path, snapshotsRetained, s.logger.Named("raft.snapshot")) if err != nil { return err } diff --git a/snapshot/snapshot.go b/snapshot/snapshot.go index fbe8660f0f..a1deee9153 100644 --- a/snapshot/snapshot.go +++ b/snapshot/snapshot.go @@ -53,6 +53,7 @@ func New(logger hclog.Logger, r *raft.Raft) (*Snapshot, error) { if err != nil { return nil, fmt.Errorf("failed to create snapshot file: %v", err) } + logger.Debug("creating temporary file of snapshot", "path", archive.Name()) // If anything goes wrong after this point, we will attempt to clean up // the temp file. The happy path will disarm this. @@ -112,7 +113,7 @@ func (s *Snapshot) Read(p []byte) (n int, err error) { } // Close closes the snapshot and removes any temporary storage associated with -// it. You must arrange to call this whenever NewSnapshot() has been called +// it. You must arrange to call this whenever New() has been called // successfully. This is safe to call on a nil snapshot. func (s *Snapshot) Close() error { if s == nil { diff --git a/website/content/commands/snapshot/save.mdx b/website/content/commands/snapshot/save.mdx index 63b0fbe48f..18ffc50150 100644 --- a/website/content/commands/snapshot/save.mdx +++ b/website/content/commands/snapshot/save.mdx @@ -20,7 +20,8 @@ If ACLs are enabled, a management token must be supplied in order to perform a snapshot save. -> Note that saving a snapshot involves the server process writing the snapshot to a -temporary file on-disk before sending that file to the CLI client. The default location +temporary file on-disk before sending that file to the CLI client. Upon successful completion, +Consul removes the temporary file. The default location of the temporary file can vary depending on operating system, but typically is `/tmp`. You can get more detailed information on default locations in the Go documentation for [os.TempDir](https://golang.org/pkg/os/#TempDir). If you need to change this location, you can do so by setting the `TMPDIR` environment @@ -28,6 +29,7 @@ variable for the Consul server processes. Keep in mind that setting the environm the CLI client attempting to perform a snapshot save will have no effect. It _must_ be set in the context of the server process. If you're using Systemd to manage your Consul server processes, then adding `Environment=TMPDIR=/path/to/dir` to your Consul unit file will work. +As a result of the Raft snapshot, Consul also saves one snapshot file at `data_dir/raft/snapshots`. The table below shows this command's [required ACLs](/consul/api-docs/api-structure#authentication). Configuration of [blocking queries](/consul/api-docs/features/blocking) and [agent caching](/consul/api-docs/features/caching)