From 16cd648181f892b075b0be9bb9941f9a28b25ee2 Mon Sep 17 00:00:00 2001
From: Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp>
Date: Sat, 22 Apr 2017 02:24:31 +0900
Subject: [PATCH] Allow to listen Unix socket (#2085)

* Allow puma to listen Unix socket

* streaming: Show the whole listening address instead of the port

Port is not always appropriate (e.g. Unix socket)

* streaming: Close server before exiting

This change especially allows to remove Unix socket before exiting.
---
 config/puma.rb     |  4 ++++
 streaming/index.js | 10 +++++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/config/puma.rb b/config/puma.rb
index 7586536f44..eb8fc6a8e9 100644
--- a/config/puma.rb
+++ b/config/puma.rb
@@ -1,6 +1,10 @@
 threads_count = ENV.fetch('MAX_THREADS') { 5 }.to_i
 threads threads_count, threads_count
 
+if ENV['SOCKET'] then
+  bind 'unix://' + ENV['SOCKET']
+end
+
 port        ENV.fetch('PORT') { 3000 }
 environment ENV.fetch('RAILS_ENV') { 'development' }
 workers     ENV.fetch('WEB_CONCURRENCY') { 2 }
diff --git a/streaming/index.js b/streaming/index.js
index 8395c9cf8e..c7959b3069 100644
--- a/streaming/index.js
+++ b/streaming/index.js
@@ -328,6 +328,14 @@ if (cluster.isMaster) {
 
   server.listen(process.env.PORT || 4000, () => {
     log.level = process.env.LOG_LEVEL || 'verbose'
-    log.info(`Starting streaming API server worker on port ${server.address().port}`)
+    log.info(`Starting streaming API server worker on ${server.address()}`)
   })
+
+  process.on('SIGINT', exit)
+  process.on('SIGTERM', exit)
+  process.on('exit', exit)
+
+  function exit() {
+    server.close()
+  }
 }
-- 
GitLab