mirror of https://github.com/status-im/consul.git
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 <ckim@hashicorp.com>
This commit is contained in:
parent
40eefaba18
commit
48f7d99305
|
@ -0,0 +1,3 @@
|
||||||
|
```release-note:improvement
|
||||||
|
logging: change snapshot log header from `agent.server.snapshot` to `agent.server.raft.snapshot`
|
||||||
|
```
|
|
@ -1056,7 +1056,7 @@ func (s *Server) setupRaft() error {
|
||||||
log = cacheStore
|
log = cacheStore
|
||||||
|
|
||||||
// Create the snapshot store.
|
// 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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,6 +53,7 @@ func New(logger hclog.Logger, r *raft.Raft) (*Snapshot, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to create snapshot file: %v", err)
|
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
|
// If anything goes wrong after this point, we will attempt to clean up
|
||||||
// the temp file. The happy path will disarm this.
|
// 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
|
// 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.
|
// successfully. This is safe to call on a nil snapshot.
|
||||||
func (s *Snapshot) Close() error {
|
func (s *Snapshot) Close() error {
|
||||||
if s == nil {
|
if s == nil {
|
||||||
|
|
|
@ -20,7 +20,8 @@ If ACLs are enabled, a management token must be supplied in order to perform
|
||||||
a snapshot save.
|
a snapshot save.
|
||||||
|
|
||||||
-> Note that saving a snapshot involves the server process writing the snapshot to a
|
-> 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
|
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).
|
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
|
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 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
|
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.
|
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
|
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)
|
[blocking queries](/consul/api-docs/features/blocking) and [agent caching](/consul/api-docs/features/caching)
|
||||||
|
|
Loading…
Reference in New Issue