create a new method for inferring the PPID
This commit is contained in:
		@@ -9,8 +9,6 @@ RUN <<EOT
 | 
				
			|||||||
  apk upgrade --no-cache
 | 
					  apk upgrade --no-cache
 | 
				
			||||||
EOT
 | 
					EOT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RUN mkdir -p /run/app
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
FROM base AS build
 | 
					FROM base AS build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -40,10 +38,6 @@ FROM base
 | 
				
			|||||||
# RUN useradd ruby --home /app --shell /bin/sh
 | 
					# RUN useradd ruby --home /app --shell /bin/sh
 | 
				
			||||||
RUN adduser ruby -h /app -D
 | 
					RUN adduser ruby -h /app -D
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RUN mkdir -p /run/app
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
RUN chown ruby:ruby /run/app
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
USER ruby:ruby
 | 
					USER ruby:ruby
 | 
				
			||||||
 | 
					
 | 
				
			||||||
COPY --from=build /usr/local/bundle /usr/local/bundle
 | 
					COPY --from=build /usr/local/bundle /usr/local/bundle
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										28
									
								
								app.rb
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								app.rb
									
									
									
									
									
								
							@@ -28,7 +28,6 @@ DEFAULT_FLAKEY = 50
 | 
				
			|||||||
ENV_PREFIX = "KUBERNAUT"
 | 
					ENV_PREFIX = "KUBERNAUT"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CLK_TCK = 100
 | 
					CLK_TCK = 100
 | 
				
			||||||
PID_FILE_PATH = "/run/app/pid".freeze
 | 
					 | 
				
			||||||
PROC_UPTIME_PATH = "/proc/uptime".freeze
 | 
					PROC_UPTIME_PATH = "/proc/uptime".freeze
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SECONDS_PER_YEAR = 31_556_952
 | 
					SECONDS_PER_YEAR = 31_556_952
 | 
				
			||||||
@@ -109,7 +108,7 @@ end
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class TickTock
 | 
					class TickTock
 | 
				
			||||||
  def initialize
 | 
					  def initialize
 | 
				
			||||||
    @pid = master_pid
 | 
					    @pid = ppid
 | 
				
			||||||
    @procfs_f = format "/proc/%s/stat", @pid
 | 
					    @procfs_f = format "/proc/%s/stat", @pid
 | 
				
			||||||
    puts @pid
 | 
					    puts @pid
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
@@ -178,9 +177,22 @@ class Sleep
 | 
				
			|||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def master_pid
 | 
					def ppid
 | 
				
			||||||
  pid_s = File.read PID_FILE_PATH
 | 
					  pid = Process.pid
 | 
				
			||||||
  Integer pid_s.strip
 | 
					  # self
 | 
				
			||||||
 | 
					  ps = File.open "/proc/#{pid}/stat", &:readline
 | 
				
			||||||
 | 
					  ps = ps.split(" ")
 | 
				
			||||||
 | 
					  ppid = Integer(ps[3])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # ppid
 | 
				
			||||||
 | 
					  ps = File.open "/proc/#{ppid}/stat", &:readline
 | 
				
			||||||
 | 
					  ps = ps.split(" ")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if ps[1].include? "ruby"
 | 
				
			||||||
 | 
					    ppid
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    pid
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def system_uptime
 | 
					def system_uptime
 | 
				
			||||||
@@ -350,19 +362,19 @@ get "/snowflake" do
 | 
				
			|||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
post "/quit" do
 | 
					post "/quit" do
 | 
				
			||||||
  Process.kill("TERM", master_pid)
 | 
					  Process.kill("TERM", ppid)
 | 
				
			||||||
  nil
 | 
					  nil
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
post "/halt" do
 | 
					post "/halt" do
 | 
				
			||||||
  Process.kill("QUIT", master_pid)
 | 
					  Process.kill("QUIT", ppid)
 | 
				
			||||||
  nil
 | 
					  nil
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
get "/pid" do
 | 
					get "/pid" do
 | 
				
			||||||
  pretty = params.key? :pretty
 | 
					  pretty = params.key? :pretty
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  jsonify({puma: master_pid, pid: Process.pid}, pretty:)
 | 
					  jsonify({ppid: ppid, pid: Process.pid}, pretty:)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
get "/token" do
 | 
					get "/token" do
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +0,0 @@
 | 
				
			|||||||
# workers 3
 | 
					 | 
				
			||||||
pidfile "/run/app/pid"
 | 
					 | 
				
			||||||
preload_app!
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user