BryanDavis has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/220941

Change subject: Add an hhvm-graceful-all command
......................................................................

Add an hhvm-graceful-all command

Add a new command that can be used to perform a rolling restart of HHVM
across the cluster.

Bug: T103886
Change-Id: Ic937aea94c5c5eea1a24df1d253f6e448cd99c65
---
A bin/hhvm-graceful-all
M scap/__init__.py
M scap/main.py
3 files changed, 50 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/tools/scap 
refs/changes/41/220941/1

diff --git a/bin/hhvm-graceful-all b/bin/hhvm-graceful-all
new file mode 100755
index 0000000..8cafdb9
--- /dev/null
+++ b/bin/hhvm-graceful-all
@@ -0,0 +1,17 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# Restart HHVM across the entire cluster
+#
+# Copyright © 2015 Wikimedia Foundation and contributors
+
+import os
+import sys
+
+# Add scap package to search path
+script = os.path.realpath(sys.argv[0])
+scap_src = os.path.dirname(os.path.dirname(script))
+sys.path.append(scap_src)
+
+import scap
+scap.HHVMGracefulAll.run()
diff --git a/scap/__init__.py b/scap/__init__.py
index d628c73..84af164 100644
--- a/scap/__init__.py
+++ b/scap/__init__.py
@@ -8,6 +8,7 @@
 """
 from .main import (
     CompileWikiversions,
+    HHVMGracefulAll,
     MWVersionsInUse,
     PurgeL10nCache,
     RebuildCdbs,
@@ -24,6 +25,7 @@
 
 __all__ = (
     'CompileWikiversions',
+    'HHVMGracefulAll',
     'MWVersionsInUse',
     'PurgeL10nCache',
     'RebuildCdbs',
@@ -40,6 +42,7 @@
 
 any((
     CompileWikiversions,
+    HHVMGracefulAll,
     MWVersionsInUse,
     PurgeL10nCache,
     RebuildCdbs,
diff --git a/scap/main.py b/scap/main.py
index f36c4bf..c2c9a6b 100644
--- a/scap/main.py
+++ b/scap/main.py
@@ -263,6 +263,7 @@
                 self.get_logger().warning(
                     '%d hosts failed to restart HHVM', failed)
                 self.soft_errors = True
+            self.get_stats().increment('deploy.restart')
 
     def _after_lock_release(self):
         self.announce('Finished scap: %s (duration: %s)',
@@ -473,7 +474,7 @@
 
 
 class RestartHHVM(cli.Application):
-    """Restart the HHVM fcgi process
+    """Restart the HHVM fcgi process on the local server
 
     #. Depool the server if registered with pybal
     #. Wait for pending requests to complete
@@ -524,3 +525,31 @@
                 '/usr/sbin/service apache2 start', self.get_logger())
 
         return 0
+
+
+class HHVMGracefulAll(cli.Application):
+    """Perform a rolling restart of HHVM across the cluster."""
+
+    def _process_arguments(self, args, extra_args):
+        if hasattr(args, 'message'):
+            args.message = ' '.join(args.message) or '(no message)'
+        return args, extra_args
+
+    @cli.argument('message', nargs='*', help='Log message for SAL')
+    def main(self, *extra_args):
+        exit_code = 0
+        self.announce('Restarting HHVM: %s', self.arguments.message)
+
+        target_hosts = utils.read_dsh_hosts_file(self.config['dsh_targets'])
+        succeeded, failed = tasks.restart_hhvm(
+            target_hosts, self.config,
+            # Use a batch size of 5% of the total target list
+            len(target_hosts) // 20)
+        if failed:
+            self.get_logger().warning(
+                '%d hosts failed to restart HHVM', failed)
+            exit_code = 1
+
+        self.announce('Finished HHVM restart: %s (duration: %s)',
+            self.arguments.message, utils.human_duration(self.get_duration()))
+        self.get_stats().increment('deploy.restart')

-- 
To view, visit https://gerrit.wikimedia.org/r/220941
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic937aea94c5c5eea1a24df1d253f6e448cd99c65
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/tools/scap
Gerrit-Branch: master
Gerrit-Owner: BryanDavis <bda...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to