-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ISO8601 Interval Support, Retry Customization #2
Comments
Hello @tooolbox, I am open to contributions however I would like to keep Dalga as simple as possible, not to bloat with features. Your suggestions seems reasonable. I have couple of questions regarding your feature requests:
This one seems doable, ISO8601 is a widespread standard and we can add parsing of ISO8601 intervals. Do you need the same feature as in Kala (https://github.com/ajvb/kala#breakdown-of-schedule-string-iso-8601-notation) or do you only need the duration format (https://en.wikipedia.org/wiki/ISO_8601#Durations) to be understandable in
This is also doable. Do you need a separate retry policy per job or a single policy defined in config is just enough? |
Thanks for the reply!
Great, and that makes sense.
I personally only need the duration format. The unified schedule specification format would be neat, but Dalga already has a way of specifying the first run date so it's not vital.
Good question. For my use case, it's sufficient to define a global policy for retry cadence in the config. As a comparison, Google Cloud Scheduler supports per-job retry configuration, but I think for now it's best to have a global setting rather than require a client to include that information every time he creates a job. |
Sounds good then. Can you a send a separate PRs for those please? |
Yes, I shall! I did have something else come up so I am not launching onto this quite yet, but you can expect the PRs to start arriving in a few days, maybe a week or two, depending. |
Hey @cenkalti I'm glad you liked #9 and #10 and it's great they're merged now! I'm starting in on the ISO8601 support which hopefully I will finish today, but I wanted to ask about the database aspect. Specifically, you have
More generally, it raises the question of how you want to approach schema migrations in this project. Since you're creating and dropping tables in Go code, I can simply add/replace the columns in the SQL and it solves my use case, but it doesn't provide an upgrade path for existing users of Dalga. Also, what about the next time the schema needs to change? Options:
|
Hello @tooolbox, I am okay with changing |
Great! I made that change, and also added Next I am going to work on retry behavior. Aside from controlling the amount/duration of retries, I need the option to keep retries independent of the overall schedule. For example, if you have a I will open a new PR for that, although it will depend on the ISO8601 support. |
Alright, you have a PR now for idempotency, and another one coming tomorrow for disable/enable. If you don't get to exponential backoff tonight (your day) I will likely do it tomorrow, in which case any notes or preferences from you would be appreciated. |
@cenkalti looks like I may not get to the exponential backoff for a bit, possibly days or a week or two. If you are interested, I defer to you to implement it. |
@tooolbox I think I can work on this this weekend. |
Well it's been a long road (over a month now) but this is all landed. Really awesome @cenkalti, thanks for your help and reviews, and pushing it over the edge. |
Hey there, was looking over Dalga and I like that it's straightforward, backed by MySQL, and supports a multi-instance deployment. However, it lacks two things for my use case:
As I said this is a very straightforward project and the source is quite readable. I more or less see what I would need to do to use an ISO8601 interval, and I can make a PR for it. I'm sure retry-customization is not much beyond that.
Before I make any PRs, I wanted to ask: are you open to contributions? Are you interested in having more features in this project?
As a comparison I did quite a bit of work over at Kala which is a similar project, but the way it is structured I don't see how to make it highly-available, which is why I am considering Dalga.
The text was updated successfully, but these errors were encountered: