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