mirror of
https://github.com/ipfs/kubo.git
synced 2026-02-21 10:27:46 +08:00
fix ctrl-c prompt during run migrations prompt (#10947)
Some checks failed
CodeQL / codeql (push) Has been cancelled
Docker Check / lint (push) Has been cancelled
Docker Check / build (push) Has been cancelled
Gateway Conformance / gateway-conformance (push) Has been cancelled
Gateway Conformance / gateway-conformance-libp2p-experiment (push) Has been cancelled
Go Build / go-build (push) Has been cancelled
Go Check / go-check (push) Has been cancelled
Go Lint / go-lint (push) Has been cancelled
Go Test / go-test (push) Has been cancelled
Interop / interop-prep (push) Has been cancelled
Sharness / sharness-test (push) Has been cancelled
Spell Check / spellcheck (push) Has been cancelled
Interop / helia-interop (push) Has been cancelled
Interop / ipfs-webui (push) Has been cancelled
Some checks failed
CodeQL / codeql (push) Has been cancelled
Docker Check / lint (push) Has been cancelled
Docker Check / build (push) Has been cancelled
Gateway Conformance / gateway-conformance (push) Has been cancelled
Gateway Conformance / gateway-conformance-libp2p-experiment (push) Has been cancelled
Go Build / go-build (push) Has been cancelled
Go Check / go-check (push) Has been cancelled
Go Lint / go-lint (push) Has been cancelled
Go Test / go-test (push) Has been cancelled
Interop / interop-prep (push) Has been cancelled
Sharness / sharness-test (push) Has been cancelled
Spell Check / spellcheck (push) Has been cancelled
Interop / helia-interop (push) Has been cancelled
Interop / ipfs-webui (push) Has been cancelled
* fix ctrl-c prompt during run migrations prompt At "Run migrations" prompt, hitting ctrl-c does not show the "(Hit ctrl-c again to force-shutdown the daemon.)" prompt, even though a 2nd ctrl-c does cause the daemon to exit. The problem is that the goroutine that displays the prompt only run after the prompt to "Run migrations", so hitting ctrl-c during the "Run migrations" prompt does not show the "(Hit ctrl-c again to force-shutdown the daemon.)" prompt. This PR fixes the problem by starting the goroutine to display the "(Hit ctrl-c again to force-shutdown the daemon.)" prompt sooner, before the "Run mirgarions" prompt. Additionally, this PR also disables showing the ctrl-c prompt if the daemon function has already exited, in which case only the exit message should be shown. Closes #3157 * exit immediately if ctrl-c during migration prompt
This commit is contained in:
parent
46cc640fc6
commit
72280f31d4
@ -284,6 +284,15 @@ func daemonFunc(req *cmds.Request, re cmds.ResponseEmitter, env cmds.Environment
|
||||
default:
|
||||
return err
|
||||
case fsrepo.ErrNeedMigration:
|
||||
migrationDone := make(chan struct{})
|
||||
go func() {
|
||||
select {
|
||||
case <-req.Context.Done():
|
||||
os.Exit(1)
|
||||
case <-migrationDone:
|
||||
}
|
||||
}()
|
||||
|
||||
domigrate, found := req.Options[migrateKwd].(bool)
|
||||
|
||||
// Get current repo version for more informative message
|
||||
@ -299,6 +308,7 @@ func daemonFunc(req *cmds.Request, re cmds.ResponseEmitter, env cmds.Environment
|
||||
if !found {
|
||||
domigrate = YesNoPrompt("Run migrations now? [y/N]")
|
||||
}
|
||||
close(migrationDone)
|
||||
|
||||
if !domigrate {
|
||||
fmt.Printf("Not running migrations on repository at %s. Re-run daemon with --migrate or see 'ipfs repo migrate --help'\n", cctx.ConfigRoot)
|
||||
|
||||
@ -64,13 +64,7 @@ func SetupInterruptHandler(ctx context.Context) (io.Closer, context.Context) {
|
||||
switch count {
|
||||
case 1:
|
||||
fmt.Println() // Prevent un-terminated ^C character in terminal
|
||||
|
||||
ih.wg.Add(1)
|
||||
go func() {
|
||||
defer ih.wg.Done()
|
||||
cancelFunc()
|
||||
}()
|
||||
|
||||
cancelFunc()
|
||||
default:
|
||||
fmt.Println("Received another interrupt before graceful shutdown, terminating...")
|
||||
os.Exit(-1)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user