Skip to content

Commit

Permalink
Merge pull request #10301 from jingyih/add_timeout_to_etcdctl_snapsho…
Browse files Browse the repository at this point in the history
…t_save

etcdctl: add timeout to snapshot save command
  • Loading branch information
xiang90 authored Dec 5, 2018
2 parents ce3e127 + 5b6b03d commit 3f01426
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 1 deletion.
9 changes: 8 additions & 1 deletion etcdctl/ctlv3/command/snapshot_command.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,15 @@ func snapshotSaveCommandFunc(cmd *cobra.Command, args []string) {
sp := snapshot.NewV3(lg)
cfg := mustClientCfgFromCmd(cmd)

// if user does not specify "--command-timeout" flag, there will be no timeout for snapshot save command
ctx, cancel := context.WithCancel(context.Background())
if isCommandTimeoutFlagSet(cmd) {
ctx, cancel = commandCtx(cmd)
}
defer cancel()

path := args[0]
if err := sp.Save(context.TODO(), *cfg, path); err != nil {
if err := sp.Save(ctx, *cfg, path); err != nil {
ExitWithError(ExitInterrupted, err)
}
fmt.Printf("Snapshot saved at %s\n", path)
Expand Down
8 changes: 8 additions & 0 deletions etcdctl/ctlv3/command/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,14 @@ func commandCtx(cmd *cobra.Command) (context.Context, context.CancelFunc) {
return context.WithTimeout(context.Background(), timeOut)
}

func isCommandTimeoutFlagSet(cmd *cobra.Command) bool {
commandTimeoutFlag := cmd.Flags().Lookup("command-timeout")
if commandTimeoutFlag == nil {
panic("expect command-timeout flag to exist")
}
return commandTimeoutFlag.Changed
}

// get the process_resident_memory_bytes from <server:2379>/metrics
func endpointMemoryMetrics(host string) float64 {
residentMemoryKey := "process_resident_memory_bytes"
Expand Down

0 comments on commit 3f01426

Please sign in to comment.