You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@nifi.apache.org by Marc Parisi <ph...@apache.org> on 2019/03/05 13:27:17 UTC

Re: Opinions on Assembly target location

Thank you for your replies. My goal was to have that shared ownership as
Bryan suggested; however, the simplicity of bootstrapping these efforts
within Apache NiFi MiNiFi C++, controlling dependencies, and overall ease
of use by maintainers has led me to close the PR and place this assembly in
MiNiFi C++. This enables the builder to package all necessary components
within the produced archive and have access to Java processors within
MiNiFI C++( they must purposefully enable this feature ).  Just wanted to
close the loop.
Thank you for your consideration

On Wed, Feb 27, 2019 at 12:52 PM Bryan Bende <bb...@gmail.com> wrote:

> I think this situation is sort of analogous to some other scenarios we
> have run into, such as the integrations between NiFi and stream
> processing.
>
> For example, the storm and spark integration lives in NiFi's code
> base, and NiFi is responsible for determining if a new version of
> those APIs is available, updating the dependency, and resolving any
> necessary code changes.
>
> The Flink and Apex integration lives in each of those respective code
> bases, so if Flink changes all of their APIs, they will be forced to
> update the NiFi Flink source/sink in order to make their build pass.
>
> I can see value in either approach. If we consider the JNI stuff to be
> a more generic capability, then I think I lean towards NiFi owning it.
>
> Even with that, MiNiFi will still be dependent on some version of
> whatever JNI artifacts NiFi produces, so MiNiFi would still have
> ownership over when to change that dependency and ensure that it still
> works properly in a given release of MiNiFi.
>
> On Wed, Feb 27, 2019 at 12:02 PM Arpad Boda <ab...@hortonworks.com> wrote:
> >
> > Hi,
> >
> > In my opinion, there is another question here to be answered: what
> version of NiFi NARs do we expect to work in MiNiFi?
> >
> > I see two different approaches here:
> > -#1) MiNiFi is compatible with a given NiFi version, like 1.9.0, NARs in
> that release work properly in MiNiFi.
> > In this case the tests belong to MiNiFi and NiFi there becomes a
> dependency -> the tests are required to pass when upgrading the dependency.
> > -#2) MiNiFi is compatible with master. This means that whatever we
> introduce in NiFi shouldn't break, so the tests more belong to NiFi.
> >
> > According to my experience preventing the merge of a breaking change is
> easier than fixing later, which would make me vote for #2, however this
> approach has a side effect, too: introducing a breaking change (that MiNiFi
> needs to adapt) becomes a huge pain, it's much easier in #1.
> >
> > Regards,
> > Arpad
> >
> > On 27/02/2019, 17:44, "Marc Parisi" <ph...@apache.org> wrote:
> >
> >     Hi ,
> >        I've submitted a PR to Apache NiFi MiNiFi C++ that enables the
> project
> >     to access and run NiFi processors. This requires that certain jars be
> >     included to bootstrap that process long with a set of NARs from
> which we
> >     will access the desired components. Effectively this means that a
> user can
> >     run the current set of C++ processors alongside Java processors.
> >        To facilitate this feature's use, I submitted a PR [1] to NiFi
> with that
> >     assembles the appropriate JARs and a basic set of useful/necessary
> NARs.
> >     I'd like opinions on where this should live. The options have been
> to place
> >     it within Apache NiFi MiNIFi C++ ( specifically within the
> aforementioned
> >     feature's build directory) as it only relates to that project and,
> perhaps
> >     allowing us to more easily address problems...or as per the PR:
> placing it
> >     in NiFi proper, hopefully building regression tests that notify us of
> >     issues before a release.
> >
> >        I've been wavering on the options and want community opinion. The
> end
> >     goal in either case is that if/when a user builds with this
> functionality
> >     we can deliver a package that runs out of the box. This can be done
> with
> >     either approach.
> >
> >         The net positive of placing it in NiFi as I see it: sense that
> it is an
> >     official feature and perhaps notification before NiFi release or in
> >     travis.  Side effects include: questioning if this belongs here,
> hair loss,
> >     and perhaps a sudden loss of appetite.
> >
> >         The net positive of isolating this within MiNIFi C++: cleaner end
> >     solution, it's produced in the same place it's consumed, ability to
> notify
> >     of problems in our CI and release process ( this could be viewed as a
> >     negative too ? ).
> >
> >     TL;DR:  Where feature Live?
> >
> >         Any insight/opinions are appreciated. Thanks!
> >
> >     [1] https://github.com/apache/nifi/pull/3330
> >
> >
>