New Foreman-tasks and Dynflow released: multi-executors, multi-hosts, socket-less, concurrent-ruby on backend

I'm happy to announce the foreman-tasks 0.7.1 with dynflow 0.8.1 are ready to be pushed live [1].

I'm writing this email for various reasons. First of all, I'm excited about the the big step forward on
the backend side:

  1. we no longer limit the number of executors (the processes doing the work) to one.
    Although we are running mutiple threads in each executor, and when written well, one
    executor is just what one needs, there are two cases where more executors will be better:
    large multi-host deployments, and HA setups. Also, as the usage of the foreman-tasks grows,
    more and more compute power is expected for it to provide.

  2. we no longer use unix sockets for the communication. For now, we switched to use
    database for exchanging the data: we support all RDBS Foreman supports, but the
    best uesr experience is expected to be on postgres database, where we use the listen/notify
    feature to make the message exchanges as fast as possible. As with everything in Dynflow,
    we've build an abstraction over the concepts of persistence, connectors, coordinators [2],
    which allows to replace particular layer with more suitable technology for the job, when needed.
    On the other hand, we've seen to many hypes over the years to lock us in the the next cool
    thing. Our motto is: write an adapter and prove us the tool is worth it.

  3. we moved to concurrent-ruby [3] gem from our custom implementation of concurrent abstractions:
    Over the past two years (what a long time…:), we (big kudos to Pitr-ch) build quite robust
    infrastructure around concurrent-abstractions, especially the actors model. However, we knew
    it's not the best to keep maintenance of that stuff in our code base. Last year, we discovered
    beautiful concurrent-ruby gem, that from the beginning looked as a perfect fit for us. What
    we did (again, Pitr-ch is the one to blame:) is extracting the code that we had in Dynflow
    and other projects, and put that into the concurrent-ruby. Thanks to the very responsive attitude
    of the maintainers and CR community (Pitr himself becoming a maintainer pretty soon),
    the code was accepted and enhanced a lot.

    We are excited about this move, because we now have even more abstractions at our hand now, as well
    as better performance and broader possibilities (such as potential JRuby support), and also
    great community behind that: we are also not alone in trusting the concurrent-ruby: Rails will most probably
    also move to it for some features.

As much as we're excited about this release, and despite our extensive testing (we've been in development
of this for over 8 months now, although not continuously, and past few months were were just polishing
the stuff), it's still a lot of new code we ship, and as everyone in software development knows,
nobody tests the code better than the others.

Therefore, if you hit some issues with running foreman-tasks/dynflow, please don't hesitate to file
an issue [4]: we will be tracking that closely to make sure to address potential issues sooner rather
than later, or just reach to us on the #theforeman-dev IRC channel

Plugin developers: foreman-tasks-0.7.1 and dynflow 0.8.1 are most probably going to be shipped
with foreman 1.9 release. There should be not breaking changes in this releases (unless you
relied on the limit of the one executor running, as we in Katello did [5]), so just make sure
to update your version dependencies accordingly.

[1] - https://github.com/theforeman/foreman-packaging/pull/697
[2] - http://dynflow.github.io/documentation/#client-world-vs.-executor-world
[3] - https://github.com/ruby-concurrency/concurrent-ruby
[4] - Foreman
[5] - https://github.com/Katello/katello/pull/5331

PS: I apologize to Katello folks to break the RPM builds temporarily with this: apparently there is not
an easy way to make this a flawless process (unless messing around with the build tag overrides),
anyway, after [5] is in everything should be back in normal.

Nice weekend everyone!

– Ivan

In particular, we'll need updated releases of foreman_chef and
foreman_salt in order to ship and publish foreman-tasks 0.7.x, due to
pinning (Stephen, Michael, Marek). A PR for foreman_chef's already up.

··· On 03/07/15 22:35, Ivan Necas wrote: > I'm happy to announce the foreman-tasks 0.7.1 with dynflow 0.8.1 are ready to be pushed live [1]. > [..] > Plugin developers: foreman-tasks-0.7.1 and dynflow 0.8.1 are most probably going to be shipped > with foreman 1.9 release. There should be not breaking changes in this releases (unless you > relied on the limit of the one executor running, as we in Katello did [5]), so just make sure > to update your version dependencies accordingly.


Dominic Cleal
Red Hat Engineering

All done, thanks folks.

0.7.x are in the nightly plugin repos now, so as and when you want, we
can republish down to 1.9. Debian packages are straightforward, and for
RPMs we'll just have to bring the new dependencies down too and retag.

··· On 06/07/15 13:24, Dominic Cleal wrote: > On 03/07/15 22:35, Ivan Necas wrote: >> I'm happy to announce the foreman-tasks 0.7.1 with dynflow 0.8.1 are ready to be pushed live [1]. >> [..] >> Plugin developers: foreman-tasks-0.7.1 and dynflow 0.8.1 are most probably going to be shipped >> with foreman 1.9 release. There should be not breaking changes in this releases (unless you >> relied on the limit of the one executor running, as we in Katello did [5]), so just make sure >> to update your version dependencies accordingly. > > In particular, we'll need updated releases of foreman_chef and > foreman_salt in order to ship and publish foreman-tasks 0.7.x, due to > pinning (Stephen, Michael, Marek). A PR for foreman_chef's already up.


Dominic Cleal
Red Hat Engineering

> >> I'm happy to announce the foreman-tasks 0.7.1 with dynflow 0.8.1 are ready
> >> to be pushed live [1].
> >> […]
> >> Plugin developers: foreman-tasks-0.7.1 and dynflow 0.8.1 are most probably
> >> going to be shipped
> >> with foreman 1.9 release. There should be not breaking changes in this
> >> releases (unless you
> >> relied on the limit of the one executor running, as we in Katello did
> >> [5]), so just make sure
> >> to update your version dependencies accordingly.
> >
> > In particular, we'll need updated releases of foreman_chef and
> > foreman_salt in order to ship and publish foreman-tasks 0.7.x, due to
> > pinning (Stephen, Michael, Marek). A PR for foreman_chef's already up.
>
> All done, thanks folks.
>
> 0.7.x are in the nightly plugin repos now, so as and when you want, we
> can republish down to 1.9. Debian packages are straightforward, and for
> RPMs we'll just have to bring the new dependencies down too and retag.

Let's take that to 1.9. Katello is now foreman-tasks 0.7 ready as well

– Ivan

··· ----- Original Message ----- > On 06/07/15 13:24, Dominic Cleal wrote: > > On 03/07/15 22:35, Ivan Necas wrote:


Dominic Cleal
Red Hat Engineering


You received this message because you are subscribed to the Google Groups
"foreman-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to foreman-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Sure, done. RPMs retagged and Debian packages are building.

··· On 08/07/15 13:32, Ivan Necas wrote: > > > ----- Original Message ----- >> On 06/07/15 13:24, Dominic Cleal wrote: >>> On 03/07/15 22:35, Ivan Necas wrote: >>>> I'm happy to announce the foreman-tasks 0.7.1 with dynflow 0.8.1 are ready >>>> to be pushed live [1]. >>>> [..] >>>> Plugin developers: foreman-tasks-0.7.1 and dynflow 0.8.1 are most probably >>>> going to be shipped >>>> with foreman 1.9 release. There should be not breaking changes in this >>>> releases (unless you >>>> relied on the limit of the one executor running, as we in Katello did >>>> [5]), so just make sure >>>> to update your version dependencies accordingly. >>> >>> In particular, we'll need updated releases of foreman_chef and >>> foreman_salt in order to ship and publish foreman-tasks 0.7.x, due to >>> pinning (Stephen, Michael, Marek). A PR for foreman_chef's already up. >> >> All done, thanks folks. >> >> 0.7.x are in the nightly plugin repos now, so as and when you want, we >> can republish down to 1.9. Debian packages are straightforward, and for >> RPMs we'll just have to bring the new dependencies down too and retag. > > Let's take that to 1.9. Katello is now foreman-tasks 0.7 ready as well


Dominic Cleal
Red Hat Engineering