Hey fellow community members and developers!
We’re doing it! The new scheduler (Ticker) is being rolled out to everyone as of now. We wanted to give you a quick note as to what to expect, what the new scheduler is, and what it isn’t.
What is ticker?
Ticker is our new scheduling architecture for SmartApps and Device Type Handlers. It has been built to be much more robust and scalable than the Cassandra scheduler we have been using for the last couple of years. We are really confident in it’s ability to improve scheduled actions on the platform.
How do you know it will be more reliable?
We first went back to the drawing board and really thought through this one and we are confident in the architecture. With ticker we have compensation jobs that check for any cron schedules that may have failed and restarts them. Also, the scheduling system is much more isolated from the rest of the application so any issues with other components should have no real impact on the scheduler. We also made sure to put Ticker through its paces, putting techincal load on the scheduler at a factor of ~20x compared to current scheduler load. We were able to successfully apply this kind of load with no lag.
Secondly, we have added a “backup” to the scheduler, so if it does get into a position of lag, schedules will be dropped into the backup and executed there, so schedules aren’t just dropped.
What scheduling functions does this affect?
This affects all our the platform scheduling operations.
- run-in()
- runOnce()
- schedule()
- runEvery5Minutes()
- runEvery10Minutes()
- runEvery15Minutes()
- runEvery30Minutes()
- runEvery1Hour()
- runEvery3Hours()
Pro-Tip: The runEveryX methods will add some “jitter” to your schedules to reduce load during popular schedule times.
I can finally chain my run-ins!?
For a short period of time a chained run-in should be fine, but should not be used for longer periods of time. For example, if you wanted to slowly dim a smart-bulb over a short period of time a chained run-in would work, but should not be used for tasks you want to run for days/weeks/years, Cron is the tool for that.
What about local (AppEngine) schedules?
These schedules will not be affected. Local schedules do not interact with the cloud and as such will not be affected negatively or positively. Local (AppEngine) scheduled jobs will not show in the IDE, similarly to how it worked in the past.
Why not just run every schedule on the hub?
Due to the fact that not all SmartApps can run on the hub, this is not possible at the moment. We also have to work within the technologies we have now, and at the moment, this just isn’t an option.
What happens if Ticker does miss a schedule?
Cron schedules should be are more resilient in the case of failure, but the chained run-in pattern will fail in the case of a schedule fire being missed to an unexpected error.
What will happen when I am moved over to the new scheduler?
We have setup the move process in such a way that we can move your account over to the new scheduler and re-schedule your jobs on Ticker. As we are migrating to the new scheduler if you see issues the “update” button should work to restart schedules, however this should not be necessary and if you continue to have issues please contact support so we can dig into and fix the issue.
How do I tell if I am on the new scheduler?
The new Ticker scheduler shows future schedules as “PENDING” instead of “WAITING”. You can see the details of each smart app by logging into the IDE>Click “My Locations”>Click “List SmartApps”>Select the smartapp you want to see. See screenshot below:
When can I expect to be on the new scheduler?
Most people have already been moved to the new scheduler. Please be patient with us as we make these changes. If you aren’t on the new Ticker scheduler by April 15th, please contact support@smartthings.com
Did the rollout of ticker cause last week’s issues?
No. Ticker uses a separate database and is isolated from pre-existing infrastructure.