Andrea and Peter, I think you raised an important point about the CI:
depending on what we decide, they are going to be even more critical to our
workflow.

I think the last few days have been outliers in terms of CI stability: the
recent changes do touch on key parts of our build, so I think some level of
instability it's OK until we sort out all the loose ends. We still have the
eventual (OOM-related?) hang-up, but it seems to me that it's decreasing in
frequency.

In the end, I think if we adjust a bit the way we are working, it may even
help with sorting out those instabilities: if we can bisect the code more
easily, then it's going to be easier* to inspect those behaviors.

*Obs. (OFF-TOPIC): In the future, we might even discuss with Infra about
installing auto-bisect plugins on Jenkins or creating an auto-bisect job
(I'll happily donate my scripts when we get to that point).

Kind regards

On Fri, Jun 23, 2023 at 5:19 PM Andrea Cosentino <anco...@gmail.com> wrote:

> As of today, the CI build  (both Jenkins and Github action) is less
> reliable than building locally.
>
> So, we could discuss if we could add some better rules in terms of grouping
> commits or use mandatory PRs, but I don't think we are at that level of
> trust with CI.
>
> Il giorno ven 23 giu 2023 alle ore 17:13 Peter Palaga <ppal...@redhat.com>
> ha scritto:
>
> > Thanks a lot Otavio, for bringing this up!
> >
> > I can only second Nicolas that CI should not be circumvented unless
> > there is a serious reason.
> > Second, PRs should ideally contain one compilable commit per logical
> > change. As long as there is a just a single such commit in a PR, then
> > the CI can work as a good barrier against broken commits.
> >
> > Otherwise it is up to the PR author to make sure that the individual
> > commits are compilable too. I personally always try honor this rule. If
> > my PR contains multiple commits, I often take care to re-order and/or
> > fixup via git rebase --interactive. The readability of the history and
> > the time of my co-workers matter to me.
> >
> > Thanks,
> >
> > -- Peter
> >
> > On 22/06/2023 10:12, Nicolas Filotto wrote:
> > > Hi,
> > >
> > > For me, the best you can do to avoid this kind of problem is to avoid
> > committing directly into the target branch by always submitting a PR for
> > any change. And then, once the build is green, merge the PR with "Squash
> > and merge" which is the default action on Camel. The action "Rebase and
> > merge" should be avoided since the build result reflects the final state
> of
> > the branch, not the intermediate states. In case you need some changes to
> > fix the build, make sure to re-synchronize the source branch with the
> > target branch, especially in case the changes are not done on the same
> day
> > because the Camel branches are modified very frequently and each change
> can
> > potentially be in conflicts with yours.
> > >
> > > it is a quite cumbersome approach but I don't see any safer way.
> > >
> > > Regards,
> > > Nicolas
> > > ________________________________
> > > From: Otavio Rodolfo Piske <angusyo...@gmail.com>
> > > Sent: Thursday, June 22, 2023 08:53
> > > To: dev@camel.apache.org <dev@camel.apache.org>
> > > Subject: Re: Some thoughts on bisecting Camel and our git commit
> > practices
> > >
> > > Hi,
> > >
> > > Release-tagged commits don't help here. The whole point of bisecting is
> > > finding out precisely which commit introduced a certain behavior or
> bug,
> > so
> > > that I and other committers can diagnose, document and fix the problem.
> > > It's not possible to do that effectively with just release-tagged
> > commits.
> > >
> > > Also, I don't think each commit needs to be "release quality": that
> would
> > > be too much right now. I do think, however, that each commit should be
> > > compilable. Consider, for instance, the following commit pattern I
> notice
> > > when bisecting the code:
> > >
> > > commit1: TASK111: did some stuff  ---> not compilable
> > > commit2: TASK111: did some stuff  ---> compilable
> > > commit3: TASK111: did some stuff ---> not compilable
> > > commit4: TASK111: did some stuff ---> compilable
> > >
> > > Git bisect run is smart enough to skip commit2 and commit3 if given a
> > > proper exit code (that's what we do). However, the problem gets worse
> > once
> > > these compilable scripts start to pile up, such as:
> > >
> > > commit1: TASK111: did some stuff  ---> not compilable
> > > commit2: TASK111: did some stuff  ---> compilable
> > > commit3: TASK111: did some stuff ---> not compilable
> > > commit4: TASK111: did some stuff ---> compilable
> > > commit5: TASK222: did some stuff  ---> not compilable
> > > commit6: TASK222: did some stuff  ---> compilable
> > > commit7: TASK222: did some stuff ---> not compilable
> > > commit8: TASK222: did some stuff ---> compilable
> > >
> > > At some point, the bisect execution runs out of skippable commits and
> you
> > > have to: a) test manually, b) restart the bisect operation with
> different
> > > good/bad commits, or c) investigate the list of skipped commits one by
> > one.
> > >
> > > The same can happen when merging community contributions composed of
> > > multiple commits.
> > >
> > > So, I think we can improve here by doing 2 things:
> > >
> > > 1. When commiting the work on a task, making sure that every commit is
> > > compilable. For instance, in the pattern above, by squashing
> > > commit1+commit2, commit3+4, etc.
> > > 2. When merging community contributions with multiple PRs, squashing
> the
> > > contribution before merging - if suspicious that one or more of the
> > commits
> > > introduce uncompilable changes.
> > >
> > > If we start doing this now, bisecting will be much easier in the
> future.
> > >
> > > Kind regards
> > >
> > > On Thu, Jun 22, 2023 at 8:08 AM Petr Kuzel <petrku...@eurofins.com
> > .invalid>
> > > wrote:
> > >
> > >> Hi Otavio,
> > >>
> > >> the codebase does not have the release quality
> > >> after each commit. Test-driven development could
> > >> even invite devs to separately commit failing tests
> > >> as a proof they are effective.
> > >>
> > >> On contrary the release-tagged commits should
> > >> be safe. Would not help you to focus
> > >> on the release-tagged commits only, pls?
> > >
> > >
> > >>    Hope it helps
> > >>    Cc.
> > >>
> > >> --
> > >>    Mr. Petr Kužel, Software Engineer
> > >>    Eurofins International Support Services s.à r.l.
> > >>    Val Fleuri 23
> > >>    L-1526 LUXEMBOURG
> > >>
> > >> -----Original Message-----
> > >> From: Otavio Rodolfo Piske <angusyo...@gmail.com>
> > >> Sent: Wednesday, June 21, 2023 11:17
> > >> To: dev <dev@camel.apache.org>
> > >> Subject: Some thoughts on bisecting Camel and our git commit practices
> > >>
> > >>
> > >> Folks,
> > >>
> > >> You may have seen that PRs constantly report failures when testing
> > changes
> > >> on core. This is almost always caused by flaky tests.
> > >>
> > >> I have been trying to find the root causes of those flaky tests. Quite
> > >> often this involves going all the way to early versions of Camel 3 to
> > find
> > >> stable executions of those tests.
> > >>
> > >> The investigation itself is mostly automated by using git bisect run
> ...
> > >> This significantly improves the developer ability to find the root
> > causes
> > >> of issues.
> > >>
> > >> Despite all this automation, however, the task has been ... quite
> > difficult
> > >> and lengthy. Even considering the extensive resources I have access to
> > >> (thanks to my employer), bisecting a single test failure can take
> > several
> > >> *days*.
> > >>
> > >> In particular, this investigation has been difficult because we have a
> > huge
> > >> amount of dirty commits on the tree: partially modified work,
> > uncompilable
> > >> changes, broken tests and more.
> > >>
> > >> While it's NOT my intention to suggest introducing/discussing a full
> > blown
> > >> clean commit policy, I do wonder if we have some room to discuss how
> we
> > can
> > >> improve the way we work to ensure that the tree is compilable and
> > somewhat
> > >> testable (and, possibly, enforce that).
> > >>
> > >> We cannot fix the git history of the project, but we can ensure that
> > future
> > >> investigation can be made much easier in the future.
> > >>
> > >> So, folks, does anyone have any suggestions about how we could improve
> > >> here?
> > >>
> > >> Kind regards
> > >> --
> > >> Otavio R. Piske
> > >>
> >
> https://urldefense.com/v3/__http://orpiske.net/__;!!CiXD_PY!SZvpton5vuSh5elDATUqZmerIhuL7ZGmoTwQB-66e3u34QRJzR2DoTvCjF3miU2oF4glDqKC5VnT439E0B0$
> > >>
> > >
> > >
> > > --
> > > Otavio R. Piske
> > >
> >
> https://urldefense.com/v3/__http://orpiske.net__;!!CiXD_PY!SZvpton5vuSh5elDATUqZmerIhuL7ZGmoTwQB-66e3u34QRJzR2DoTvCjF3miU2oF4glDqKC5VnTh1-lNIM$
> > >
> > > As a recipient of an email from the Talend Group, your personal data
> > will be processed by our systems. Please see our Privacy Notice <
> > https://www.talend.com/privacy-policy/> for more information about our
> > collection and use of your personal information, our security practices,
> > and your data protection rights, including any rights you may have to
> > object to automated-decision making or profiling we use to analyze
> support
> > or marketing related communications. To manage or discontinue promotional
> > communications, use the communication preferences portal<
> > https://info.talend.com/emailpreferencesen.html>. To exercise your data
> > protection rights, use the privacy request form<
> >
> https://talend.my.onetrust.com/webform/ef906c5a-de41-4ea0-ba73-96c079cdd15a/b191c71d-f3cb-4a42-9815-0c3ca021704cl
> >.
> > Contact us here <https://www.talend.com/contact/> or by mail to either
> of
> > our co-headquarters: Talend, Inc.: 400 South El Camino Real, Ste 1400,
> San
> > Mateo, CA 94402; Talend SAS: 5/7 rue Salomon De Rothschild, 92150
> Suresnes,
> > France
> > >
> >
> >
>


-- 
Otavio R. Piske
http://orpiske.net

Reply via email to