Giuseppe Lavagetto has submitted this change and it was merged.

Change subject: hhvm: add systemd/jessie support
......................................................................


hhvm: add systemd/jessie support

Change-Id: Id654cfb6f0a501172e4511f6d4656ef2ff48b423
---
A modules/hhvm/files/check-hhvm-stacktraces.sh
M modules/hhvm/manifests/init.pp
A modules/hhvm/templates/hhvm.default.systemd.erb
R modules/hhvm/templates/hhvm.default.upstart.erb
A modules/hhvm/templates/initscripts/hhvm.systemd.erb
5 files changed, 65 insertions(+), 11 deletions(-)

Approvals:
  Giuseppe Lavagetto: Looks good to me, approved
  Muehlenhoff: Looks good to me, but someone else must approve
  jenkins-bot: Verified



diff --git a/modules/hhvm/files/check-hhvm-stacktraces.sh 
b/modules/hhvm/files/check-hhvm-stacktraces.sh
new file mode 100755
index 0000000..5f7d96a
--- /dev/null
+++ b/modules/hhvm/files/check-hhvm-stacktraces.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -u
+# Find any stacktraces we still did not act upon
+for TRACE in "/var/log/hhvm/stacktrace.*.log";
+do
+    # Log the stack trace
+    /usr/bin/logger --tag hhvm-fatal --file ${TRACE}
+
+    # Append the current UTC date (in YYYYMMDD format) to the file
+    # name, so it doesn't get clobbered when the PID is recycled.
+    mv --backup "$TRACE" "${TRACE}.$(date -u +%Y%m%d)"
+done
diff --git a/modules/hhvm/manifests/init.pp b/modules/hhvm/manifests/init.pp
index 39f5c26..9a6bb5a 100644
--- a/modules/hhvm/manifests/init.pp
+++ b/modules/hhvm/manifests/init.pp
@@ -64,7 +64,7 @@
     $tmp_dir       = '/var/tmp/hhvm',
     $cache_dir     = '/var/cache/hhvm'
     ) {
-    requires_os('ubuntu >= trusty')
+    requires_os('ubuntu >= trusty || Debian >= jessie')
 
 
     ## Packages
@@ -223,24 +223,31 @@
     ## Service
 
     file { '/etc/default/hhvm':
-        content => template('hhvm/hhvm.default.erb'),
+        content => template("hhvm/hhvm.default.${::initsystem}.erb"),
         owner   => 'root',
         group   => 'root',
         mode    => '0444',
         notify  => Service['hhvm'],
     }
 
-    file { '/etc/init/hhvm.conf':
-        content => template('hhvm/initscripts/hhvm.upstart.erb'),
-        owner   => 'root',
-        group   => 'root',
-        mode    => '0444',
+    base::service_unit { 'hhvm':
+        ensure    => present,
+        systemd   => true,
+        upstart   => true,
+        refresh   => false,
+        subscribe => Package[$ext_pkgs],
     }
 
-    service { 'hhvm':
-        ensure    => 'running',
-        provider  => 'upstart',
-        subscribe => Package[$ext_pkgs],
+    if $::initsystem == 'systemd' {
+        # Post-stop script to collect stacktraces
+        file { '/usr/local/bin/check-hhvm-stacktraces':
+            ensure => present,
+            mode   => '0550',
+            owner  => $user,
+            group  => $group,
+            source => 'puppet:///modules/hhvm/check-hhvm-stacktraces.sh',
+            before => Base::Service_unit['hhvm'],
+        }
     }
 
     file { '/etc/hhvm':
@@ -289,6 +296,7 @@
     # Prune stale symbol translation maps from /tmp. These files are
     # generated by HHVM to supply `perf` with language-level context.
 
+    # TODO: this will not work under systemd-based systems
     cron { 'tidy_perf_maps':
         command => '/usr/bin/find /tmp -name "perf-*" -not -cnewer 
/run/hhvm/hhvm.pid -delete > /dev/null 2>&1',
         hour    => fqdn_rand(23, 'tidy_perf_maps'),
diff --git a/modules/hhvm/templates/hhvm.default.systemd.erb 
b/modules/hhvm/templates/hhvm.default.systemd.erb
new file mode 100644
index 0000000..389cd82
--- /dev/null
+++ b/modules/hhvm/templates/hhvm.default.systemd.erb
@@ -0,0 +1,9 @@
+# Default file for HHVM
+# This file is managed by Puppet.
+
+# Run the FastCGI server as this user.
+RUN_AS_USER="<%= @user %>"
+RUN_AS_GROUP="<%= @group %>
+
+## Add additional arguments to the hhvm service start up that you can't put in 
CONFIG_FILE for some reason.
+# ADDITIONAL_ARGS=
diff --git a/modules/hhvm/templates/hhvm.default.erb 
b/modules/hhvm/templates/hhvm.default.upstart.erb
similarity index 100%
rename from modules/hhvm/templates/hhvm.default.erb
rename to modules/hhvm/templates/hhvm.default.upstart.erb
diff --git a/modules/hhvm/templates/initscripts/hhvm.systemd.erb 
b/modules/hhvm/templates/initscripts/hhvm.systemd.erb
new file mode 100644
index 0000000..9a3c289
--- /dev/null
+++ b/modules/hhvm/templates/initscripts/hhvm.systemd.erb
@@ -0,0 +1,25 @@
+[Unit]
+Description=HHVM PHP/Hack runtime
+After=network.target
+
+[Service]
+Environment=CONFIG_FILE=/etc/hhvm/server.ini
+Environment=ADDITIONAL_ARGS=
+Environment=RUN_AS_USER=www-data
+EnvironmentFile=/etc/default/hhvm
+ExecStart=/usr/bin/hhvm --mode server --config $CONFIG_FILE --user 
$RUN_AS_USER $ADDITIONAL_ARGS
+ExecStopPost=/usr/local/bin/check-hhvm-stacktraces
+# Restart Policy: always restart, but wait 1 sec before respawning
+Restart=always
+RestartSec=1s
+
+# Resource Limits
+# Don't limit the core dumps size
+LimitCORE=infinity
+# Increase the maximum number of open files
+LimitNOFILE=65536
+# Increase the maximum size of the stack to 64MiB. See T73486.
+LimitSTACK=67108864
+
+[Install]
+WantedBy=multi-user.target

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Id654cfb6f0a501172e4511f6d4656ef2ff48b423
Gerrit-PatchSet: 5
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Giuseppe Lavagetto <[email protected]>
Gerrit-Reviewer: Giuseppe Lavagetto <[email protected]>
Gerrit-Reviewer: Muehlenhoff <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to