[ARVADOS] created: 2.1.0-2397-g68200af27

Git user git at public.arvados.org
Mon May 2 19:14:47 UTC 2022


        at  68200af27ac67509f15fea09459ff1f0d1b703f6 (commit)


commit 68200af27ac67509f15fea09459ff1f0d1b703f6
Author: Tom Clegg <tom at curii.com>
Date:   Thu Apr 28 15:17:05 2022 -0400

    18947: Refactor keep-balance as arvados-server subcommand.
    
    Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom at curii.com>

diff --git a/build/run-tests.sh b/build/run-tests.sh
index d517e7e2c..0f996f77e 100755
--- a/build/run-tests.sh
+++ b/build/run-tests.sh
@@ -158,6 +158,8 @@ only_install=
 temp=
 temp_preserve=
 
+ignore_sigint=
+
 clear_temp() {
     if [[ -z "$temp" ]]; then
         # we did not even get as far as making a temp dir
@@ -473,6 +475,10 @@ stop_services() {
 }
 
 interrupt() {
+    if [[ -n "$ignore_sigint" ]]; then
+        echo >&2 "ignored SIGINT"
+        return
+    fi
     failures+=("($(basename $0) interrupted)")
     exit_cleanly
 }
@@ -1216,6 +1222,7 @@ else
     setnextcmd
     HISTFILE="$WORKSPACE/tmp/.history"
     history -r
+    ignore_sigint=1
     while read -p 'What next? ' -e -i "$nextcmd" nextcmd; do
         history -s "$nextcmd"
         history -w
diff --git a/cmd/arvados-server/cmd.go b/cmd/arvados-server/cmd.go
index e4bd39002..c9a91c872 100644
--- a/cmd/arvados-server/cmd.go
+++ b/cmd/arvados-server/cmd.go
@@ -22,6 +22,7 @@ import (
 	"git.arvados.org/arvados.git/lib/lsf"
 	"git.arvados.org/arvados.git/lib/recovercollection"
 	"git.arvados.org/arvados.git/services/githttpd"
+	keepbalance "git.arvados.org/arvados.git/services/keep-balance"
 	keepweb "git.arvados.org/arvados.git/services/keep-web"
 	"git.arvados.org/arvados.git/services/keepproxy"
 	"git.arvados.org/arvados.git/services/keepstore"
@@ -46,6 +47,7 @@ var (
 		"git-httpd":          githttpd.Command,
 		"install":            install.Command,
 		"init":               install.InitCommand,
+		"keep-balance":       keepbalance.Command,
 		"keep-web":           keepweb.Command,
 		"keepproxy":          keepproxy.Command,
 		"keepstore":          keepstore.Command,
diff --git a/sdk/python/tests/run_test_server.py b/sdk/python/tests/run_test_server.py
index 74722b256..6f591b74a 100644
--- a/sdk/python/tests/run_test_server.py
+++ b/sdk/python/tests/run_test_server.py
@@ -957,6 +957,9 @@ if __name__ == "__main__":
               format(args.action, actions),
               file=sys.stderr)
         sys.exit(1)
+    # Create a new process group so our child processes don't exit on
+    # ^C in run-tests.sh interactive mode.
+    os.setpgid(0, 0)
     if args.action == 'start':
         stop(force=('ARVADOS_TEST_API_HOST' not in os.environ))
         run(leave_running_atexit=True)
diff --git a/services/keep-balance/balance.go b/services/keep-balance/balance.go
index eb6f580f4..1dedb409a 100644
--- a/services/keep-balance/balance.go
+++ b/services/keep-balance/balance.go
@@ -2,7 +2,7 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-package main
+package keepbalance
 
 import (
 	"bytes"
diff --git a/services/keep-balance/balance_run_test.go b/services/keep-balance/balance_run_test.go
index 0d1b6b591..2db7bea17 100644
--- a/services/keep-balance/balance_run_test.go
+++ b/services/keep-balance/balance_run_test.go
@@ -2,7 +2,7 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-package main
+package keepbalance
 
 import (
 	"bytes"
diff --git a/services/keep-balance/balance_test.go b/services/keep-balance/balance_test.go
index df04145b9..6626609b5 100644
--- a/services/keep-balance/balance_test.go
+++ b/services/keep-balance/balance_test.go
@@ -2,7 +2,7 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-package main
+package keepbalance
 
 import (
 	"crypto/md5"
diff --git a/services/keep-balance/block_state.go b/services/keep-balance/block_state.go
index e30b4ff79..07c9952f9 100644
--- a/services/keep-balance/block_state.go
+++ b/services/keep-balance/block_state.go
@@ -2,7 +2,7 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-package main
+package keepbalance
 
 import (
 	"sync"
diff --git a/services/keep-balance/block_state_test.go b/services/keep-balance/block_state_test.go
index aaf2c18e2..8a58be288 100644
--- a/services/keep-balance/block_state_test.go
+++ b/services/keep-balance/block_state_test.go
@@ -2,7 +2,7 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-package main
+package keepbalance
 
 import (
 	"time"
diff --git a/services/keep-balance/change_set.go b/services/keep-balance/change_set.go
index 85d03d409..8e0ba028a 100644
--- a/services/keep-balance/change_set.go
+++ b/services/keep-balance/change_set.go
@@ -2,7 +2,7 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-package main
+package keepbalance
 
 import (
 	"encoding/json"
diff --git a/services/keep-balance/change_set_test.go b/services/keep-balance/change_set_test.go
index baf7ab6dc..5474d29fb 100644
--- a/services/keep-balance/change_set_test.go
+++ b/services/keep-balance/change_set_test.go
@@ -2,7 +2,7 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-package main
+package keepbalance
 
 import (
 	"encoding/json"
diff --git a/services/keep-balance/collection.go b/services/keep-balance/collection.go
index 1e1e51abe..ccb01bdd1 100644
--- a/services/keep-balance/collection.go
+++ b/services/keep-balance/collection.go
@@ -2,7 +2,7 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-package main
+package keepbalance
 
 import (
 	"context"
diff --git a/services/keep-balance/collection_test.go b/services/keep-balance/collection_test.go
index f749bad6a..ca67d1617 100644
--- a/services/keep-balance/collection_test.go
+++ b/services/keep-balance/collection_test.go
@@ -2,7 +2,7 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-package main
+package keepbalance
 
 import (
 	"context"
diff --git a/services/keep-balance/integration_test.go b/services/keep-balance/integration_test.go
index a6cc32810..3cfb5cded 100644
--- a/services/keep-balance/integration_test.go
+++ b/services/keep-balance/integration_test.go
@@ -2,7 +2,7 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-package main
+package keepbalance
 
 import (
 	"bytes"
diff --git a/services/keep-balance/keep_service.go b/services/keep-balance/keep_service.go
index 17f8418f6..f50fbfd94 100644
--- a/services/keep-balance/keep_service.go
+++ b/services/keep-balance/keep_service.go
@@ -2,7 +2,7 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-package main
+package keepbalance
 
 import (
 	"context"
diff --git a/services/keep-balance/main.go b/services/keep-balance/main.go
index 8a95d389c..f0b0df5bd 100644
--- a/services/keep-balance/main.go
+++ b/services/keep-balance/main.go
@@ -2,16 +2,15 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-package main
+package keepbalance
 
 import (
+	"bytes"
 	"context"
 	"flag"
 	"fmt"
 	"io"
-	"net/http"
 	_ "net/http/pprof"
-	"os"
 
 	"git.arvados.org/arvados.git/lib/cmd"
 	"git.arvados.org/arvados.git/lib/config"
@@ -22,16 +21,13 @@ import (
 	"github.com/jmoiron/sqlx"
 	_ "github.com/lib/pq"
 	"github.com/prometheus/client_golang/prometheus"
-	"github.com/sirupsen/logrus"
 )
 
-func main() {
-	os.Exit(runCommand(os.Args[0], os.Args[1:], os.Stdin, os.Stdout, os.Stderr))
-}
+type command struct{}
 
-func runCommand(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) int {
-	logger := ctxlog.FromContext(context.Background())
+var Command = command{}
 
+func (command) RunCommand(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) int {
 	var options RunOptions
 	flags := flag.NewFlagSet(prog, flag.ContinueOnError)
 	flags.BoolVar(&options.Once, "once", false,
@@ -42,34 +38,21 @@ func runCommand(prog string, args []string, stdin io.Reader, stdout, stderr io.W
 		"send trash requests (delete unreferenced old blocks, and excess replicas of overreplicated blocks)")
 	flags.BoolVar(&options.CommitConfirmedFields, "commit-confirmed-fields", true,
 		"update collection fields (replicas_confirmed, storage_classes_confirmed, etc.)")
-	dumpFlag := flags.Bool("dump", false, "dump details for each block to stdout")
-	pprofAddr := flags.String("pprof", "", "serve Go profile data at `[addr]:port`")
-	// "show version" is implemented by service.Command, so we
-	// don't need the var here -- we just need the -version flag
+	// These options are implemented by service.Command, so we
+	// don't need the vars here -- we just need the flags
 	// to pass flags.Parse().
+	flags.Bool("dump", false, "dump details for each block to stdout")
+	flags.String("pprof", "", "serve Go profile data at `[addr]:port`")
 	flags.Bool("version", false, "Write version information to stdout and exit 0")
 
-	if *pprofAddr != "" {
-		go func() {
-			logrus.Println(http.ListenAndServe(*pprofAddr, nil))
-		}()
-	}
-
-	loader := config.NewLoader(os.Stdin, logger)
+	logger := ctxlog.New(stderr, "json", "info")
+	loader := config.NewLoader(&bytes.Buffer{}, logger)
 	loader.SetupFlags(flags)
-
 	munged := loader.MungeLegacyConfigArgs(logger, args, "-legacy-keepbalance-config")
 	if ok, code := cmd.ParseFlags(flags, prog, munged, "", stderr); !ok {
 		return code
 	}
 
-	if *dumpFlag {
-		dumper := logrus.New()
-		dumper.Out = os.Stdout
-		dumper.Formatter = &logrus.TextFormatter{}
-		options.Dumper = dumper
-	}
-
 	// Drop our custom args that would be rejected by the generic
 	// service.Command
 	args = nil
diff --git a/services/keep-balance/main_test.go b/services/keep-balance/main_test.go
index 820f35216..26002eca9 100644
--- a/services/keep-balance/main_test.go
+++ b/services/keep-balance/main_test.go
@@ -2,7 +2,7 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-package main
+package keepbalance
 
 import (
 	"bytes"
@@ -25,7 +25,7 @@ type mainSuite struct{}
 
 func (s *mainSuite) TestVersionFlag(c *check.C) {
 	var stdout, stderr bytes.Buffer
-	runCommand("keep-balance", []string{"-version"}, nil, &stdout, &stderr)
+	Command.RunCommand("keep-balance", []string{"-version"}, nil, &stdout, &stderr)
 	c.Check(stderr.String(), check.Equals, "")
 	c.Log(stdout.String())
 	c.Check(stdout.String(), check.Matches, `keep-balance.*\(go1.*\)\n`)
@@ -51,7 +51,7 @@ func (s *mainSuite) TestHTTPServer(c *check.C) {
 	c.Assert(err, check.IsNil)
 
 	var stdout bytes.Buffer
-	go runCommand("keep-balance", []string{"-config", "-"}, bytes.NewBuffer(config), &stdout, &stdout)
+	go Command.RunCommand("keep-balance", []string{"-config", "-"}, bytes.NewBuffer(config), &stdout, &stdout)
 	done := make(chan struct{})
 	go func() {
 		defer close(done)
diff --git a/services/keep-balance/metrics.go b/services/keep-balance/metrics.go
index ce1b1811c..4683b67b9 100644
--- a/services/keep-balance/metrics.go
+++ b/services/keep-balance/metrics.go
@@ -2,7 +2,7 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-package main
+package keepbalance
 
 import (
 	"fmt"
diff --git a/services/keep-balance/server.go b/services/keep-balance/server.go
index 5299b96c1..e485f5b20 100644
--- a/services/keep-balance/server.go
+++ b/services/keep-balance/server.go
@@ -2,7 +2,7 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-package main
+package keepbalance
 
 import (
 	"net/http"

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list