t.txt in rufus-scheduler-3.3.1 vs t.txt in rufus-scheduler-3.3.2
- old
+ new
@@ -1,92 +1,25 @@
-Smoothing planes – Hira-ganna (平鉋) // General name for the “standard plane type”
-Extremely rough smoothing plane – Oni-arashiko-ganna (鬼荒しこ鉋)
-Rough smoothing plane – Arashiko-ganna (荒しこ鉋)
-Uneven smoothing plane – Muratori-ganna (むらとり鉋)
-Middle smoothing plane – Chushiko-ganna (中しこ鉋)
-Before finish smoothing plane – Jyoshiko-ganna (上しこ鉋)
-Finish smoothing plane – Shiage-ganna (仕上げ鉋)
-Mid-length plane – Chudai-ganna (中台鉋) // Around 35 cm long dai
-Jointer plane – Nagadai-ganna (長台鉋) // At-least 40 cm long dai
-Block plane or Small plane – Ko-ganna (小鉋) // Less than 5.5cm long blade
-Big plane – O-ganna (大鉋) // Blade wider than 9 cm
-Mini plane / Bean plane – Mame-ganna (豆鉋) // Unusually small plane
-Sole tuning plane – Dainaoshi ganna (台直し鉋)
-“Aircraft” plane – Hikōki kanna (飛行機鉋) // Used in Shoji and Kumiko
-Shoulder planes or Groove planes – Jyakuri-ganna (決り鉋) or Mizo-ganna (溝鉋)
-Rough shoulder plane – Ara-jyakuri-ganna (荒決り鉋)
-Shoulder plane – Soko-jyakuri-ganna (底決り鉋)
-Western Japan type – Nishi-gata (西型)
-Eastern Japan type – Higashi-gata (東型)
-The comb type – Kushi-gata (櫛型)
-The Osaka type – Osaka-gata (大阪型)
-Wide groove plane – Motoichi-jyakuri-ganna (基市決り鉋)
-Groove plane – Kikai-jyakuri-ganna (機械決り鉋)
-Curved grooves plane – Dabo-jyakuri-ganna (ダボ決り鉋)
-Lap or halving joint plane – Ai-jyakuri-ganna (相決り鉋)
-Dovetail plane – Ari-jyakuri-ganna (蟻決り鉋)
-Groove plane – Kude-jyakuri-ganna (組手決り鉋) // Specially for making Shoji screen dividers joints
-Wide groove plane – Madowaku-jyakuri-ganna (窓枠決り鉋) // Specially for windows in western architecture
-Rebate or Rabbet plane – Kiwa-ganna (際鉋)
-Right cutting type – hidari-gatte (左勝手型)
-Left cutting type – migi-gatte (右勝手型)
-Groove sides planes – Wakitori-ganna (脇取鉋)
-Groove sides plane – Wakitori-ganna (脇取鉋) or Hibukura-ganna (ひぶくら鉋)
-“Double usages” plane – Nitoku-ganna (二徳鉋)
-“5 different usages” plane – Gotoku-ganna (五徳鉋)
-Chamfer planes, Moulding planes and Compass planes – Mentori-ganna (面取り鉋)
-Convex rounding plane – Sotomaru-ganna (外丸鉋)
-Concave rounding plane – Uchimaru-ganna (内丸鉋)
-Spoon-bottomed plane – Soridai-ganna (反り台鉋)
-4 directionally convex plane – Shiho-sori-ganna (四方反り台鉋)
-4 directionally concave plane – Funa-zoko-ganna (舟底鉋)
-Chamfer planes and Moulding planes – Mentori-ganna (面取り鉋)
-Point of a sword chamfer – Mentori-ganna kensaki (面取鉋-剣先面)
-Pointed edges chamfer – Mentori-ganna kicho-men (面取鉋-几帳面)
-Flat chamfer – Mentori-ganna hirakicho-men (面取鉋-平几帳面)
-Monk’s head chamfer – Mentori-ganna bozu-men (面取鉋-坊主面)
-Gingko chamfer – Mentori-ganna ginnan-men (面取鉋-銀杏面)
-Calabash chamfer – Mentori-ganna hyotan-men (面取鉋-瓢箪面)
-Free form flat chamfer – Mentori-ganna jiyu-kaku-men (面取鉋-自由角面)
-Free form monk’s head chamfer – Mentori-ganna jiyu-saru-men (面取鉋-角面・猿頬面兼用)
-UNKNOWN chamfer – Mentori-ganna gomae-men (面取鉋-胡麻柄面)
-UNKNOWN chamfer – Mentori-ganna hikikake-men (面取鉋-引掛面)
-UNKNOWN chamfer – Mentori-ganna iriko-men (面取鉋-入子面)
-Single thread chamfer – Mentori-ganna katahimo-men (面取鉋-片紐面)
-Double thread chamfer – Mentori-ganna ryohimo-men (面取鉋-両紐面)
-Mullion chamfer – Mentori-ganna kumiko-men (面取鉋-組子面)
-Double shape changing chamfer – Mentori-ganna nichobori-henkei-men (面取鉋-二丁掘変形面)
-Shape changing chamfer – Mentori-ganna henkei-men (面取鉋-変形面)
-UNKNOWN chamfer – Mentori-ganna sumimaru-yokokezuri (面取鉋-隅丸横削り)
-UNKNOWN chamfer – Mentori-ganna sumimaru-hyotan-men (面取鉋-隅丸瓢箪面)
-UNKNOWN chamfer – Mentori-ganna bozu-men (面取鉋-坊主面)
-UNKNOWN chamfer – Mentori-ganna kenyo-bozu-men (面取鉋-兼用坊主面)
-UNKNOWN chamfer – Mentori-ganna hira-bozu-men (面取鉋-平坊主面)
-Kumiko angle planes – Ha-ganna (葉鉋) // Four planes designed to cut at 60°, 45°, 30°, and 15°
-60° Ha-ganna – Gomagara-ganna (ゴマガラ鉋)
-45° Ha-ganna – 45 Do-ganna (45度鉋)
-30° Ha-ganna – Asanoha-ganna (麻ノ葉鉋)
-15° Ha-ganna – Yae Asa-ganna (八重麻鉋)
-Special planes
-Tongue and groove plane – Maru-inrō kanna (丸印籠鉋) // Specially used where Shoji doors meet
-Tongue and groove plane – Inrō-ganna (印籠鉋) // General Tongue and groove planes
-Tongue plane – Sane-ganna (さね鉋)
-Free form tongue plane – jiyu-sane-ganna (自由さね鉋)
-End grain surface plane – Koguchi-ganna (木口鉋)
-Round corner rebate or rabbet plane – Naguri-ganna (なぐり鉋)
-Spokeshave – Nankin-ganna (南京鉋)
-UNKNOWN groove plane – Umegashi-yo-yokomizu-ganna (埋樫用横溝鉋)
-Handplane parts and other names
-Plane blade – Ganna-ba ()
-Plane block – Ganna-dai or Dai ()
-White oak for Dai – Kashi ()
-Common laminated plane blade – Awase-ganna ()
-Hard steel – Hagane (鋼)
-Soft iron – Jigane (地金)
-Front side of blade – Ko ()
-Back side of blade – Ura (裏)
-Hollow back of plane blade – Ura-suki (裏透き)
-The flat of the plane blade – Ito-ura () // Ito is optimal size for planes
-The mouth – Ha-guchi ()
-The sole – Shitaba ()
+**phase 4 - 2016-12-22**
+
+> Added phase 3 logs to question. It looks like some how there is a new scheduler process that is subsequently created and then destroyed inside the model code. Thanks again for your diligence on this!
+
+Is that really happening in the model code? Your logs tell us that it happens in another process. Your initial Ruby process initializes rufus-scheduler then your HTTP requests are served in worker processes which are forks of your initial process (without the threads, in other words with inactive schedulers).
+
+You're using Puma in clustered mode. I should have immediately asked you about your configuration.
+
+Read carefully its documentation at https://github.com/puma/puma#configuration
+
+An easy fix would be not to use the clustered mode so that there is only one Ruby process involved, serving all the HTTP requests.
+
+If you need the clustered mode, you have to change your way of thinking. You probably don't want to have 1 rufus-scheduler instance per worker thread. You could focus on having the core (live) rufus-scheduler in the main process. It could have a "management" job that checks recently updated metrics and unschedules/schedules jobs.
+
+ SCHEDULER.every '10s', overlap: false do
+ Metric.recently_updated.each do |metric|
+ SCHEDULER.jobs(tags: metric.id).each(&:unschedule)
+ SCHEDULER.every(metric.frequency, tags: self.id) { metric.add_value }
+ end
+ end
+ # or something like that...
+
+Have fun!