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!