svelte-on-rails 23.0.0 → 23.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3940962e167ef99d7a0d4c96d0d55efb4beed16497825830840c668bfa06b46d
4
- data.tar.gz: 26a6cc1b3e604da9877eea62a2f8a9fd48dcba6dffcde1b988f6d65fe6b8261c
3
+ metadata.gz: 3c733c4ddc2d785a0534720152724d64f8e61a6334b4ba76c0f6f1cbac1fe7da
4
+ data.tar.gz: faa9b3a2ccd3c5deef64a31f65a0e6d5d3b5d5687ce7836b9f20f7b83175decd
5
5
  SHA512:
6
- metadata.gz: fe829b60ff8c1fb774a7c426b10f2b4736016a4e0b022daf47d76751a6f0ec27e4f46cac9960315c0c57bf3f1e35236b210184bd4bd1dea9193d314b10b04c73
7
- data.tar.gz: 97e54fe0b02be5a342861e47f52d5eacb9442060af0e98b3ae152c52d3f66f708e7b7874aae4467bd7672c4f19f1ed39841bfb6c847375241bd5e1e03a4fa56f
6
+ metadata.gz: b42c8269255b5958b294501ba7d655576dad6e83d99d9e2b2e28618fa063eed83a41dfa8b91a1b3384bfa6c4a4ae3935deb2184e303b50dc2070a835b5718ce5
7
+ data.tar.gz: e07230f03d3d7b430045fb76505d15c8d197a1dadf74655edac1c44592c032e3f4456b2e5adc0138ea45c99da1fc3e5bb70705e60141fc6e4f56ac22931b5863
@@ -23,9 +23,11 @@ module SvelteOnRails
23
23
 
24
24
  @initialized_by = caller
25
25
 
26
- File.open(SvelteOnRails::Lib::Utils.ssr_server_logfile, 'w') do |f|
27
- f.sync = true
28
- f.puts("[#{Time.now.utc.iso8601(3)} ppid:#{Process.ppid} pid:#{Process.pid}] >>> Logfile deleted on initializing SsrClient, called by #{caller} <<<")
26
+ if ssr_startup_leader?
27
+ File.open(SvelteOnRails::Lib::Utils.ssr_server_logfile, 'w') do |f|
28
+ f.sync = true
29
+ f.puts("[#{Time.now.utc.iso8601(3)} ppid:#{Process.ppid} pid:#{Process.pid}] >>> Logfile deleted on initializing SsrClient, called by #{caller} <<<")
30
+ end
29
31
  end
30
32
 
31
33
  @socket_namespace = [
@@ -43,11 +45,11 @@ module SvelteOnRails
43
45
 
44
46
  File.delete(restart_marker_file) if File.exist?(restart_marker_file)
45
47
 
46
- SvelteOnRails::SsrClientControlChannel.install_control_listener
48
+ SvelteOnRails::SsrClientControlChannel.install_control_listener if ssr_startup_leader?
47
49
 
48
50
  if @ssr_server
49
51
 
50
- start_node_server!
52
+ start_node_server! if ssr_startup_leader?
51
53
 
52
54
  at_exit do
53
55
  shutdown(caller: 'at_exit')
@@ -183,58 +185,49 @@ module SvelteOnRails
183
185
  restart_after_failure: false
184
186
  )
185
187
 
186
- # when multiple workers defined: ensure only the first start the node instance
187
- if ssr_socket_exists?
188
- SvelteOnRails::Lib::Utils.ssr_server_log("SOR start_node_server! => Exit because socket-file already exists", ssr_logfile_only: !restart_after_failure)
189
- return
190
- end
191
- with_ssr_client_flock do
192
- if ssr_socket_exists?
193
- SvelteOnRails::Lib::Utils.ssr_server_log("SOR start_node_server! => Exit because concurrency process detected by flock-file", ssr_logfile_only: !restart_after_failure)
194
- return
195
- end
188
+ return if ping?
196
189
 
197
- SvelteOnRails::Lib::Utils.ssr_server_log("SOR start_node_server! called", ssr_logfile_only: !restart_after_failure)
198
-
199
- start = Time.now
200
-
201
- @node_server_output = {}
202
- Thread.new do
203
- stdout, stderr, status = Open3.capture3(
204
- start_node_server_command(started_by),
205
- chdir: Rails.root
206
- )
207
- @node_server_output = {
208
- stdout: stdout,
209
- stderr: stderr,
210
- status: status
211
- }
212
- end
213
- SvelteOnRails::Lib::Utils.ssr_server_log("Node Version: #{Configuration.instance.node_version_test}, package version: #{Configuration.instance.npm_package_version_test}")
214
- SvelteOnRails::Lib::Utils.ssr_server_log("Start running Svelte-SSR-Server... (#{started_by})")
190
+ SvelteOnRails::Lib::Utils.ssr_server_log("SOR start_node_server! called", ssr_logfile_only: !restart_after_failure)
215
191
 
216
- until node_server_pid do
217
- sleep 0.12
218
- SvelteOnRails::Lib::Utils.ssr_server_log("Waiting for node server process-id")
219
- start_server_timeout!(start)
220
- end
192
+ start = Time.now
221
193
 
222
- until File.socket?(socket_path) do
223
- sleep 0.1
224
- SvelteOnRails::Lib::Utils.ssr_server_log("Waiting for socket to be created")
225
- start_server_timeout!(start)
226
- end
227
- SvelteOnRails::Lib::Utils.ssr_server_log("Socket created: #{socket_path}")
194
+ @node_server_output = {}
195
+ Thread.new do
196
+ stdout, stderr, status = Open3.capture3(
197
+ start_node_server_command(started_by),
198
+ chdir: Rails.root
199
+ )
200
+ @node_server_output = {
201
+ stdout: stdout,
202
+ stderr: stderr,
203
+ status: status
204
+ }
205
+ end
206
+ SvelteOnRails::Lib::Utils.ssr_server_log("Node Version: #{Configuration.instance.node_version_test}, package version: #{Configuration.instance.npm_package_version_test}")
207
+ SvelteOnRails::Lib::Utils.ssr_server_log("Start running Svelte-SSR-Server... (#{started_by})")
228
208
 
229
- until ping? do
230
- SvelteOnRails::Lib::Utils.ssr_server_log("Waiting for successful server-response")
231
- start_server_timeout!(start)
232
- sleep 0.1
233
- end
234
- SvelteOnRails::Lib::Utils.ssr_server_log("Server responded successfully")
209
+ until node_server_pid do
210
+ sleep 0.12
211
+ SvelteOnRails::Lib::Utils.ssr_server_log("Waiting for node server process-id")
212
+ start_server_timeout!(start)
213
+ end
214
+
215
+ until File.socket?(socket_path) do
216
+ sleep 0.1
217
+ SvelteOnRails::Lib::Utils.ssr_server_log("Waiting for socket to be created")
218
+ start_server_timeout!(start)
219
+ end
220
+ SvelteOnRails::Lib::Utils.ssr_server_log("Socket created: #{socket_path}")
235
221
 
236
- cleanup_leftover_processes
222
+ until ping? do
223
+ SvelteOnRails::Lib::Utils.ssr_server_log("Waiting for successful server-response")
224
+ start_server_timeout!(start)
225
+ sleep 0.1
237
226
  end
227
+ SvelteOnRails::Lib::Utils.ssr_server_log("Server responded successfully")
228
+
229
+ cleanup_leftover_processes
230
+
238
231
  cleanup_flock_file_later
239
232
  end
240
233
 
@@ -326,21 +319,35 @@ module SvelteOnRails
326
319
 
327
320
  private
328
321
 
329
- def ssr_socket_exists?
330
- File.socket?(socket_path)
331
- end
322
+ def ssr_startup_leader?
323
+ return @ssr_startup_leader unless @ssr_startup_leader.nil?
324
+
325
+ FileUtils.mkdir_p(File.dirname(flock_file))
326
+
327
+ @ssr_startup_flock_file = File.open(flock_file, File::RDWR | File::CREAT, 0o644)
328
+
329
+ if @ssr_startup_flock_file.flock(File::LOCK_EX | File::LOCK_NB)
330
+ SvelteOnRails::Lib::Utils.ssr_server_log(
331
+ "SSR startup leader elected: pid=#{Process.pid}, ppid=#{Process.ppid}",
332
+ ssr_logfile_only: true
333
+ )
334
+ @ssr_startup_leader = true
335
+ else
336
+ @ssr_startup_flock_file.close
337
+ @ssr_startup_flock_file = nil
332
338
 
333
- def with_ssr_client_flock
334
- File.open(flock_file, File::RDWR | File::CREAT, 0o644) do |file|
335
- file.flock(File::LOCK_EX)
336
- yield
337
- ensure
338
- file.flock(File::LOCK_UN) if file
339
+ SvelteOnRails::Lib::Utils.ssr_server_log(
340
+ "SSR startup leader already exists; skipping Node startup in pid=#{Process.pid}, ppid=#{Process.ppid}",
341
+ ssr_logfile_only: true
342
+ )
343
+ @ssr_startup_leader = false
339
344
  end
345
+
346
+ @ssr_startup_leader
340
347
  end
341
348
 
342
349
  def flock_file
343
- File.join(File.dirname(socket_path), "ssr-client-flock")
350
+ Rails.root.join('tmp', 'sockets', "svelte-ssr-#{Process.ppid}.flock")
344
351
  end
345
352
 
346
353
  def cleanup_flock_file_later
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: svelte-on-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 23.0.0
4
+ version: 23.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christian Sedlmair