Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
The Final Crontab
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Selena Deckelmann
May 06, 2014
Technology
8.5k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
The Final Crontab
About crontabber:
https://github.com/mozilla/crontabber
Selena Deckelmann
May 06, 2014
More Decks by Selena Deckelmann
See All by Selena Deckelmann
Our privacy and the web
selenamarie
0
710
Postgres: an intro for new developers
selenamarie
0
260
Alembic and SQLAlchemy: sane schema management
selenamarie
0
310
code4lib - What beginners teach us
selenamarie
0
1.5k
What beginners teach us - New Relic FutureTalk
selenamarie
0
240
Cost of 100% processing and crashstorage options for Socorro
selenamarie
0
220
Socorro, crash-stats.mozilla.com and Postgres
selenamarie
0
360
What beginners teach us - Passion Projects
selenamarie
6
2.3k
Sane Schema Management with Alembic
selenamarie
2
1.5k
Other Decks in Technology
See All in Technology
仕様と現実の間で落とし所を探るリモートMCPの認証・認可 — Sansanの認証基盤における課題と実践
sansantech
PRO
2
220
PostgreSQL オプティマイザ統計の秘密
nori_shinoda
1
440
続・ソフトウェアアーキテクトのための意思決定術: Decision Readiness, Revisited — When AI Changes the Economics of Software Architecture
snoozer05
PRO
9
2.8k
Active Directory と Entra ID のむむむな関係
murachiakira
PRO
4
1.7k
AI Agent 時代のデータ基盤: ClickHouse で実現する 超高速分析とコスト削減の両立
jozono
0
220
AIエージェントの監視、思考を見るか行動を見るか / Monitoring AI Agents: Thoughts or Actions
yusukeshimizu
2
180
Sizing, Benchmarking and Performance Tuning Apache Flink Clusters
rmetzger
0
140
HQ駆動開発で最高のAI-Contextを作ろう
sansantech
PRO
1
120
Kiro を使うコツ (頼み方、覚えさせ方、任せ方) | 目指せ Kiro マスター 09
inariku
PRO
3
120
bpf_arenaとstruct_opsを使うのが難しかった話
masu_mi
0
220
In-Context Learning再入門。ICLの勾配降下的解釈の研究動向を追ってみる。
dai08srhg
1
780
Cloudflareの向き先
chimame
1
160
Featured
See All Featured
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
770
The Limits of Empathy - UXLibs8
cassininazir
2
770
A Tale of Four Properties
chriscoyier
163
24k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.5k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
890
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
370
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
980
Writing Fast Ruby
sferik
630
63k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
390
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
680
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Transcript
The Final Crontab Selena Deckelmann Data Architect, Mozilla @selenamarie http://chesnok.com/
crontabber
None
None
socorro1 socorro3 WAL Socorro1 .dev Socorro1. stage base_backup copy Sunday
noon PT streaming rep Prod socorro2 backup4 base_backup & pg_dump backup reporting1 WAL socorro-db-zeus-rw socorro-db-zeus-ro very architecture very architecture such replicas such replicas wow wow
None
None
None
None
None
Tons more at: http://lqbs.fr/suchcomments/
None
http://github.com/mozilla/socorro
http://bit.ly/1fOgBSB
*/5 * * * * socorro crontabber.sh
image by @CoryLoftis
Motivating factors
#ThreeWordHorrorStories
No unit tests
No unit tests
Bespoke shell scripts
Postgres stored procedures
Email from cron
0 5000 10000 15000 20000 25000 Dec 5, 2010 May
5, 2011 Oct 5, 2011 Mar 5, 2012 Aug 5, 2012 Jan 5, 2013 Jun 5, 2013 Nov 5, 2013 Apr 5, 2014 Cron alert messages
None
Email from cron that you need to read.
None
Cron, what is it good for? • birthday reminders •
status updates for a website • doxygen output for manuals every 12 hours • email nags about bugs filed wrong • ETL • Postgres -> Cloudwatch • Batch processing • Backups of RO DB • Machine heartbeat • “sweet fuck all” • “auto” updates • logging laptop IP • check for abandoned twitter accounts
Running jobs on a predictable schedule
How Socorro uses cron • Time-dependent reports or maintenance •
“Simple” event detection and triggers • Status logging
Our use cases • Stored procedures for materialized views in
Postgres • Daily map-reduces (largely deprecated) • FTP Scraping into Postgres • Bulk email responses to crash submissions pulled from Elastic Search
Jobs that don’t lend themselves to queue management because of
time-dependencies, fragility or complexity.
crontabber https://github.com/mozilla/crontabber
On Github: Peter Bengtsson @peterbe & Lars Lohn @twobraids
pip install crontabber
Our crontabber jobs
None
None
None
None
configman https://github.com/mozilla/configman
Our config https://github.com/mozilla/socorro/blob/ master/config/crontabber.ini-dist
None
No more shell scripts
#!/bin/bash . /etc/socorro/socorrorc NAME=`basename $0 .sh` lock --ignore-existing $NAME ${PYTHON}
${APPDIR}/socorro/cron/crontabber.py \ --admin.conf=/etc/socorro/crontabber.ini \ >> /var/log/socorro/crontabber.log 2>&1 EXIT_CODE=$? unlock $NAME exit $EXIT_CODE
Retries on failure
Waits to run if a dependency fails
Nagios alerts
15:58 < nagios-phx1> | Sun 15:58:44 PDT [1085] socorroadm.stage.private.phx1.mozilla.com: Socorro
Admin - crontab is CRITICAL: CRITICAL - correlations-addon-matview (CorrelationsAddonCronApp) (http://m.mozilla.org/Socorro+Admin+-+crontab)
Allow configurable number of failures before CRITICAL
Unit test framework for all jobs
Documented dependencies
None
None
Config can get hairy
One-off runs aren’t simple
Parallel execution coming soon! or...
*/5 * * * * socorro crontabber \ --admin.conf=/etc/crontabber1.ini */5
* * * * socorro crontabber \ --admin.conf=/etc/crontabber2.ini */5 * * * * socorro crontabber \ --admin.conf=/etc/crontabber3.ini
crontabber as a module is running in our stage environment
Dependencies • Python 2.6 or higher • Postgres 9.2 or
higher •
https://github.com/mozilla/crontabber Ping us in #breakpad on irc.mozilla.org Tune in: Tuesday
June 10th at 7pm PDT at air.mozilla.com!
The Final Crontab Selena Deckelmann Data Architect, Mozilla @selenamarie http://chesnok.com/