Re: Class Loading Conflicts - Different JAR Versions

2018-03-27 Thread Bryan Bende
Mike,

Here is a PR that should setup the ES stuff appropriately:

https://github.com/apache/nifi/pull/2586

If we merge this for 1.7 then we should mention something in the
migration notes, not that there is anything someone needs to do, but
just for knowledge in case someone tries to do some interesting setup
running 1.7 stuff in 1.6.

-Bryan


On Tue, Mar 27, 2018 at 9:37 AM, Otto Fowler  wrote:
> You can look at the aws nar for a sample of what I think Brian means.
>
>
>
> On March 27, 2018 at 07:31:54, Mike Thomsen (mikerthom...@gmail.com) wrote:
>
> Brian,
>
> So...
>
> nifi-foo-service-impl-nar + nifi-foo-processors-nar ---depend on--->
> nifi-foo-service-api-nar
> ---depends on---> nifi-standard-services-api-nar
>
> That's what I should look for in the ES NARs?
>
> On Mon, Mar 26, 2018 at 10:31 PM, Bryan Bende  wrote:
>
>> Also, regarding the elastic search issue Mike mentioned…
>>
>> Usually when a processor can’t select the controller service at runtime
> it
>> is because theres an issue with the way the dependencies are setup
> between
>> NARs. There should generally be dependency paths like the following…
>>
>> nifi-foo-service-impl-nar --|
>> |-->
>> nifi-foo-service-api-nar -> nifi-standard-services-api-nar
>> nifi-foo-processors-nar ---|
>>
>> All these links would be dependencies of nar in the poms.
>>
>> The above is for the case where processors and service implementation are
>> packaged separately, which is slightly different than what I was
> suggesting
>> for the Mongo case.
>>
>> > On Mar 26, 2018, at 10:06 PM, Bryan Bende  wrote:
>> >
>> > I’m a +1 for moving the Mongo stuff out of standard services.
>> >
>> > Controller service APIs should always be broken out into their own NAR,
>> but the processors and implementation can usually be bundled together.
>> >
>> > So something like the following would work:
>> >
>> > nifi-mongo-bundle
>> > - nifi-mongodb-services-api
>> > - nifi-mongodb-services-api-nar (would have NAR dependency on standard
>> services API NAR)
>> > - nifi-mongodb-processors
>> > - nifi-mongodb-nar (would have NAR dependency on
>> nifi-mongodb-services-api-nar)
>> >
>> > The processors module would have the processors and the client service
>> implementation.
>> >
>> >
>> >> On Mar 26, 2018, at 9:13 PM, Brian Ghigiarelli 
>> wrote:
>> >>
>> >> Thanks for the clarification, Mike.
>> >>
>> >> My primary motivation for this upgrade is to support an aggregation
>> >> pipeline with the $out stage. Support for this in the Java driver was
>> >> introduced in 3.4 via https://jira.mongodb.org/browse/JAVA-2254. Prior
>> to
>> >> this, I believe you had to use the cursor to query all of the results,
>> >> which suffers from both query performance issues and concurrency
> issues
>> for
>> >> the data flow if we're trying to overwrite an entire collection at
> once.
>> >> That said, if I'm missing something, I'm happy to learn!
>> >>
>> >> Thanks again,
>> >> Brian
>> >>
>> >> On Mon, Mar 26, 2018 at 7:57 PM Mike Thomsen 
>> wrote:
>> >>
>> >>> I was just following a convention at the time. So unless something
>> breaks
>> >>> because of the move, I don't see any reason why it would be an issue
> to
>> >>> move it.
>> >>>
>> >>> In fact, with NIFI-4325 the only reason I put the new ElasticSearch
>> >>> service/api in the standard-services segment of the code base was I
> ran
>> >>> into a bizarre issue at runtime where I could define the controller
>> >>> service, but the processor had no idea it was there. So that too
> might
>> >>> warrant some extra eyes now that #4325 was added to master today.
>> >>>
>> >>> FWIW, I can't think of any reason why the MongoDB client service
> needs
>> 3.4
>> >>> or 3.6 over 3.2.
>> >>>
>> >>> Brian, feel free to ping me on the review.
>> >>>
>> >>> Thanks,
>> >>>
>> >>> Mike
>> >>>
>> >>> On Mon, Mar 26, 2018 at 6:59 PM, Matt Burgess 
>> >>> wrote:
>> >>>
>>  Brian (this one's all you ;),
>> 
>>  I think that PR is quite welcome in my opinion, but I'd like to get
>>  Mike Thomsen's and others' opinions on the subject too, I think Mike
>>  wrote the original service (or at the least is very knowledgable
> about
>>  Mongo and NiFi), he might have run into issues that led him to put
> it
>>  there for a reason. If not, let's do it, if you're willing to submit
>>  the contribution I/we'd be more than happy to review/incorporate it
> :)
>> 
>>  Regards,
>>  Matt
>> 
>> 
>>  On Mon, Mar 26, 2018 at 6:20 PM, Brian Ghigiarelli <
>> briang...@gmail.com>
>>  wrote:
>> > Matt,
>> >
>> > +1 [non-binding] for the idea to move the Mongo dependencies into
>> that
>> > bundle. I think it will likely need the NAR dependency on
>> > nifi-standard-services-api in order to provide a link to the SSL
>> >>> Context
>> > Service. Is that ticket / PR worthy as a one-off in the short term?
>> No
>> > doubt the Extension Registry will be a powerful capability.
>> >
>> >>>

Re: Class Loading Conflicts - Different JAR Versions

2018-03-27 Thread Otto Fowler
You can look at the aws nar for a sample of what I think Brian means.



On March 27, 2018 at 07:31:54, Mike Thomsen (mikerthom...@gmail.com) wrote:

Brian,

So...

nifi-foo-service-impl-nar + nifi-foo-processors-nar ---depend on--->
nifi-foo-service-api-nar
---depends on---> nifi-standard-services-api-nar

That's what I should look for in the ES NARs?

On Mon, Mar 26, 2018 at 10:31 PM, Bryan Bende  wrote:

> Also, regarding the elastic search issue Mike mentioned…
>
> Usually when a processor can’t select the controller service at runtime
it
> is because theres an issue with the way the dependencies are setup
between
> NARs. There should generally be dependency paths like the following…
>
> nifi-foo-service-impl-nar --|
> |-->
> nifi-foo-service-api-nar -> nifi-standard-services-api-nar
> nifi-foo-processors-nar ---|
>
> All these links would be dependencies of nar in the poms.
>
> The above is for the case where processors and service implementation are
> packaged separately, which is slightly different than what I was
suggesting
> for the Mongo case.
>
> > On Mar 26, 2018, at 10:06 PM, Bryan Bende  wrote:
> >
> > I’m a +1 for moving the Mongo stuff out of standard services.
> >
> > Controller service APIs should always be broken out into their own NAR,
> but the processors and implementation can usually be bundled together.
> >
> > So something like the following would work:
> >
> > nifi-mongo-bundle
> > - nifi-mongodb-services-api
> > - nifi-mongodb-services-api-nar (would have NAR dependency on standard
> services API NAR)
> > - nifi-mongodb-processors
> > - nifi-mongodb-nar (would have NAR dependency on
> nifi-mongodb-services-api-nar)
> >
> > The processors module would have the processors and the client service
> implementation.
> >
> >
> >> On Mar 26, 2018, at 9:13 PM, Brian Ghigiarelli 
> wrote:
> >>
> >> Thanks for the clarification, Mike.
> >>
> >> My primary motivation for this upgrade is to support an aggregation
> >> pipeline with the $out stage. Support for this in the Java driver was
> >> introduced in 3.4 via https://jira.mongodb.org/browse/JAVA-2254. Prior
> to
> >> this, I believe you had to use the cursor to query all of the results,
> >> which suffers from both query performance issues and concurrency
issues
> for
> >> the data flow if we're trying to overwrite an entire collection at
once.
> >> That said, if I'm missing something, I'm happy to learn!
> >>
> >> Thanks again,
> >> Brian
> >>
> >> On Mon, Mar 26, 2018 at 7:57 PM Mike Thomsen 
> wrote:
> >>
> >>> I was just following a convention at the time. So unless something
> breaks
> >>> because of the move, I don't see any reason why it would be an issue
to
> >>> move it.
> >>>
> >>> In fact, with NIFI-4325 the only reason I put the new ElasticSearch
> >>> service/api in the standard-services segment of the code base was I
ran
> >>> into a bizarre issue at runtime where I could define the controller
> >>> service, but the processor had no idea it was there. So that too
might
> >>> warrant some extra eyes now that #4325 was added to master today.
> >>>
> >>> FWIW, I can't think of any reason why the MongoDB client service
needs
> 3.4
> >>> or 3.6 over 3.2.
> >>>
> >>> Brian, feel free to ping me on the review.
> >>>
> >>> Thanks,
> >>>
> >>> Mike
> >>>
> >>> On Mon, Mar 26, 2018 at 6:59 PM, Matt Burgess 
> >>> wrote:
> >>>
>  Brian (this one's all you ;),
> 
>  I think that PR is quite welcome in my opinion, but I'd like to get
>  Mike Thomsen's and others' opinions on the subject too, I think Mike
>  wrote the original service (or at the least is very knowledgable
about
>  Mongo and NiFi), he might have run into issues that led him to put
it
>  there for a reason. If not, let's do it, if you're willing to submit
>  the contribution I/we'd be more than happy to review/incorporate it
:)
> 
>  Regards,
>  Matt
> 
> 
>  On Mon, Mar 26, 2018 at 6:20 PM, Brian Ghigiarelli <
> briang...@gmail.com>
>  wrote:
> > Matt,
> >
> > +1 [non-binding] for the idea to move the Mongo dependencies into
> that
> > bundle. I think it will likely need the NAR dependency on
> > nifi-standard-services-api in order to provide a link to the SSL
> >>> Context
> > Service. Is that ticket / PR worthy as a one-off in the short term?
> No
> > doubt the Extension Registry will be a powerful capability.
> >
> > Also, +2 for the greeting, though Bryan may choose to put the "y"
> >>> first.
>  :-)
> >
> > Thanks,
> > Brian
> >
> > On Mon, Mar 26, 2018 at 5:13 PM Matt Burgess 
>  wrote:
> >
> >> Bri/yan,
> >>
> >> IMO I think we'd be better off with moving the
> >> nifi-mongodb-client-service-api and nifi-mongodb-services bundles
> into
> >> the nifi-mongodb-bundle. That's something I missed while reviewing
> the
> >> PR that put them in standard services. I don't see a direct
> dependency
> >> on nifi-sta

Re: Class Loading Conflicts - Different JAR Versions

2018-03-27 Thread Mike Thomsen
Brian,

So...

nifi-foo-service-impl-nar + nifi-foo-processors-nar ---depend on--->
nifi-foo-service-api-nar
---depends on---> nifi-standard-services-api-nar

That's what I should look for in the ES NARs?

On Mon, Mar 26, 2018 at 10:31 PM, Bryan Bende  wrote:

> Also, regarding the elastic search issue Mike mentioned…
>
> Usually when a processor can’t select the controller service at runtime it
> is because theres an issue with the way the dependencies are setup between
> NARs. There should generally be dependency paths like the following…
>
> nifi-foo-service-impl-nar --|
>   |-->
> nifi-foo-service-api-nar -> nifi-standard-services-api-nar
> nifi-foo-processors-nar ---|
>
> All these links would be dependencies of nar in the poms.
>
> The above is for the case where processors and service implementation are
> packaged separately, which is slightly different than what I was suggesting
> for the Mongo case.
>
> > On Mar 26, 2018, at 10:06 PM, Bryan Bende  wrote:
> >
> > I’m a +1 for moving the Mongo stuff out of standard services.
> >
> > Controller service APIs should always be broken out into their own NAR,
> but the processors and implementation can usually be bundled together.
> >
> > So something like the following would work:
> >
> > nifi-mongo-bundle
> > - nifi-mongodb-services-api
> > - nifi-mongodb-services-api-nar (would have NAR dependency on standard
> services API NAR)
> > - nifi-mongodb-processors
> > - nifi-mongodb-nar (would have NAR dependency on
> nifi-mongodb-services-api-nar)
> >
> > The processors module would have the processors and the client service
> implementation.
> >
> >
> >> On Mar 26, 2018, at 9:13 PM, Brian Ghigiarelli 
> wrote:
> >>
> >> Thanks for the clarification, Mike.
> >>
> >> My primary motivation for this upgrade is to support an aggregation
> >> pipeline with the $out stage. Support for this in the Java driver was
> >> introduced in 3.4 via https://jira.mongodb.org/browse/JAVA-2254. Prior
> to
> >> this, I believe you had to use the cursor to query all of the results,
> >> which suffers from both query performance issues and concurrency issues
> for
> >> the data flow if we're trying to overwrite an entire collection at once.
> >> That said, if I'm missing something, I'm happy to learn!
> >>
> >> Thanks again,
> >> Brian
> >>
> >> On Mon, Mar 26, 2018 at 7:57 PM Mike Thomsen 
> wrote:
> >>
> >>> I was just following a convention at the time. So unless something
> breaks
> >>> because of the move, I don't see any reason why it would be an issue to
> >>> move it.
> >>>
> >>> In fact, with NIFI-4325 the only reason I put the new ElasticSearch
> >>> service/api in the standard-services segment of the code base was I ran
> >>> into a bizarre issue at runtime where I could define the controller
> >>> service, but the processor had no idea it was there. So that too might
> >>> warrant some extra eyes now that #4325 was added to master today.
> >>>
> >>> FWIW, I can't think of any reason why the MongoDB client service needs
> 3.4
> >>> or 3.6 over 3.2.
> >>>
> >>> Brian, feel free to ping me on the review.
> >>>
> >>> Thanks,
> >>>
> >>> Mike
> >>>
> >>> On Mon, Mar 26, 2018 at 6:59 PM, Matt Burgess 
> >>> wrote:
> >>>
>  Brian (this one's all you ;),
> 
>  I think that PR is quite welcome in my opinion, but I'd like to get
>  Mike Thomsen's and others' opinions on the subject too, I think Mike
>  wrote the original service (or at the least is very knowledgable about
>  Mongo and NiFi), he might have run into issues that led him to put it
>  there for a reason. If not, let's do it, if you're willing to submit
>  the contribution I/we'd be more than happy to review/incorporate it :)
> 
>  Regards,
>  Matt
> 
> 
>  On Mon, Mar 26, 2018 at 6:20 PM, Brian Ghigiarelli <
> briang...@gmail.com>
>  wrote:
> > Matt,
> >
> > +1 [non-binding] for the idea to move the Mongo dependencies into
> that
> > bundle. I think it will likely need the NAR dependency on
> > nifi-standard-services-api in order to provide a link to the SSL
> >>> Context
> > Service. Is that ticket / PR worthy as a one-off in the short term?
> No
> > doubt the Extension Registry will be a powerful capability.
> >
> > Also, +2 for the greeting, though Bryan may choose to put the "y"
> >>> first.
>  :-)
> >
> > Thanks,
> > Brian
> >
> > On Mon, Mar 26, 2018 at 5:13 PM Matt Burgess 
>  wrote:
> >
> >> Bri/yan,
> >>
> >> IMO I think we'd be better off with moving the
> >> nifi-mongodb-client-service-api and nifi-mongodb-services bundles
> into
> >> the nifi-mongodb-bundle. That's something I missed while reviewing
> the
> >> PR that put them in standard services. I don't see a direct
> dependency
> >> on nifi-standard-services, and if the nifi-mongodb-client-service-
> api
> >> needs the nifi-standard-services-

Re: Class Loading Conflicts - Different JAR Versions

2018-03-26 Thread Bryan Bende
Also, regarding the elastic search issue Mike mentioned…

Usually when a processor can’t select the controller service at runtime it is 
because theres an issue with the way the dependencies are setup between NARs. 
There should generally be dependency paths like the following…

nifi-foo-service-impl-nar --|
  |--> nifi-foo-service-api-nar -> 
nifi-standard-services-api-nar
nifi-foo-processors-nar ---|

All these links would be dependencies of nar in the poms.

The above is for the case where processors and service implementation are 
packaged separately, which is slightly different than what I was suggesting for 
the Mongo case.

> On Mar 26, 2018, at 10:06 PM, Bryan Bende  wrote:
> 
> I’m a +1 for moving the Mongo stuff out of standard services.
> 
> Controller service APIs should always be broken out into their own NAR, but 
> the processors and implementation can usually be bundled together. 
> 
> So something like the following would work:
> 
> nifi-mongo-bundle
> - nifi-mongodb-services-api
> - nifi-mongodb-services-api-nar (would have NAR dependency on standard 
> services API NAR)
> - nifi-mongodb-processors 
> - nifi-mongodb-nar (would have NAR dependency on 
> nifi-mongodb-services-api-nar)
> 
> The processors module would have the processors and the client service 
> implementation.
> 
> 
>> On Mar 26, 2018, at 9:13 PM, Brian Ghigiarelli  wrote:
>> 
>> Thanks for the clarification, Mike.
>> 
>> My primary motivation for this upgrade is to support an aggregation
>> pipeline with the $out stage. Support for this in the Java driver was
>> introduced in 3.4 via https://jira.mongodb.org/browse/JAVA-2254. Prior to
>> this, I believe you had to use the cursor to query all of the results,
>> which suffers from both query performance issues and concurrency issues for
>> the data flow if we're trying to overwrite an entire collection at once.
>> That said, if I'm missing something, I'm happy to learn!
>> 
>> Thanks again,
>> Brian
>> 
>> On Mon, Mar 26, 2018 at 7:57 PM Mike Thomsen  wrote:
>> 
>>> I was just following a convention at the time. So unless something breaks
>>> because of the move, I don't see any reason why it would be an issue to
>>> move it.
>>> 
>>> In fact, with NIFI-4325 the only reason I put the new ElasticSearch
>>> service/api in the standard-services segment of the code base was I ran
>>> into a bizarre issue at runtime where I could define the controller
>>> service, but the processor had no idea it was there. So that too might
>>> warrant some extra eyes now that #4325 was added to master today.
>>> 
>>> FWIW, I can't think of any reason why the MongoDB client service needs 3.4
>>> or 3.6 over 3.2.
>>> 
>>> Brian, feel free to ping me on the review.
>>> 
>>> Thanks,
>>> 
>>> Mike
>>> 
>>> On Mon, Mar 26, 2018 at 6:59 PM, Matt Burgess 
>>> wrote:
>>> 
 Brian (this one's all you ;),
 
 I think that PR is quite welcome in my opinion, but I'd like to get
 Mike Thomsen's and others' opinions on the subject too, I think Mike
 wrote the original service (or at the least is very knowledgable about
 Mongo and NiFi), he might have run into issues that led him to put it
 there for a reason. If not, let's do it, if you're willing to submit
 the contribution I/we'd be more than happy to review/incorporate it :)
 
 Regards,
 Matt
 
 
 On Mon, Mar 26, 2018 at 6:20 PM, Brian Ghigiarelli 
 wrote:
> Matt,
> 
> +1 [non-binding] for the idea to move the Mongo dependencies into that
> bundle. I think it will likely need the NAR dependency on
> nifi-standard-services-api in order to provide a link to the SSL
>>> Context
> Service. Is that ticket / PR worthy as a one-off in the short term? No
> doubt the Extension Registry will be a powerful capability.
> 
> Also, +2 for the greeting, though Bryan may choose to put the "y"
>>> first.
 :-)
> 
> Thanks,
> Brian
> 
> On Mon, Mar 26, 2018 at 5:13 PM Matt Burgess 
 wrote:
> 
>> Bri/yan,
>> 
>> IMO I think we'd be better off with moving the
>> nifi-mongodb-client-service-api and nifi-mongodb-services bundles into
>> the nifi-mongodb-bundle. That's something I missed while reviewing the
>> PR that put them in standard services. I don't see a direct dependency
>> on nifi-standard-services, and if the nifi-mongodb-client-service-api
>> needs the nifi-standard-services-api as a dependency, it can make it a
>> NAR dependency.
>> 
>> We might want to visit this as a much broader case, since I believe we
>> could run into this with other services APIs (Elasticsearch, HBase,
>> etc.)? Certainly when the Extension Registry becomes a thing, we might
>> not want "external" service APIs to be part of
>> nifi-standard-services-api.
>> 
>> Regards,
>> Matt
>> 
>> 
>> On Mon, Mar 26, 2018 at 5:03 PM, Brian Ghigiare

Re: Class Loading Conflicts - Different JAR Versions

2018-03-26 Thread Bryan Bende
I’m a +1 for moving the Mongo stuff out of standard services.

Controller service APIs should always be broken out into their own NAR, but the 
processors and implementation can usually be bundled together. 

So something like the following would work:

nifi-mongo-bundle
 - nifi-mongodb-services-api
 - nifi-mongodb-services-api-nar (would have NAR dependency on standard 
services API NAR)
 - nifi-mongodb-processors 
 - nifi-mongodb-nar (would have NAR dependency on nifi-mongodb-services-api-nar)

The processors module would have the processors and the client service 
implementation.


> On Mar 26, 2018, at 9:13 PM, Brian Ghigiarelli  wrote:
> 
> Thanks for the clarification, Mike.
> 
> My primary motivation for this upgrade is to support an aggregation
> pipeline with the $out stage. Support for this in the Java driver was
> introduced in 3.4 via https://jira.mongodb.org/browse/JAVA-2254. Prior to
> this, I believe you had to use the cursor to query all of the results,
> which suffers from both query performance issues and concurrency issues for
> the data flow if we're trying to overwrite an entire collection at once.
> That said, if I'm missing something, I'm happy to learn!
> 
> Thanks again,
> Brian
> 
> On Mon, Mar 26, 2018 at 7:57 PM Mike Thomsen  wrote:
> 
>> I was just following a convention at the time. So unless something breaks
>> because of the move, I don't see any reason why it would be an issue to
>> move it.
>> 
>> In fact, with NIFI-4325 the only reason I put the new ElasticSearch
>> service/api in the standard-services segment of the code base was I ran
>> into a bizarre issue at runtime where I could define the controller
>> service, but the processor had no idea it was there. So that too might
>> warrant some extra eyes now that #4325 was added to master today.
>> 
>> FWIW, I can't think of any reason why the MongoDB client service needs 3.4
>> or 3.6 over 3.2.
>> 
>> Brian, feel free to ping me on the review.
>> 
>> Thanks,
>> 
>> Mike
>> 
>> On Mon, Mar 26, 2018 at 6:59 PM, Matt Burgess 
>> wrote:
>> 
>>> Brian (this one's all you ;),
>>> 
>>> I think that PR is quite welcome in my opinion, but I'd like to get
>>> Mike Thomsen's and others' opinions on the subject too, I think Mike
>>> wrote the original service (or at the least is very knowledgable about
>>> Mongo and NiFi), he might have run into issues that led him to put it
>>> there for a reason. If not, let's do it, if you're willing to submit
>>> the contribution I/we'd be more than happy to review/incorporate it :)
>>> 
>>> Regards,
>>> Matt
>>> 
>>> 
>>> On Mon, Mar 26, 2018 at 6:20 PM, Brian Ghigiarelli 
>>> wrote:
 Matt,
 
 +1 [non-binding] for the idea to move the Mongo dependencies into that
 bundle. I think it will likely need the NAR dependency on
 nifi-standard-services-api in order to provide a link to the SSL
>> Context
 Service. Is that ticket / PR worthy as a one-off in the short term? No
 doubt the Extension Registry will be a powerful capability.
 
 Also, +2 for the greeting, though Bryan may choose to put the "y"
>> first.
>>> :-)
 
 Thanks,
 Brian
 
 On Mon, Mar 26, 2018 at 5:13 PM Matt Burgess 
>>> wrote:
 
> Bri/yan,
> 
> IMO I think we'd be better off with moving the
> nifi-mongodb-client-service-api and nifi-mongodb-services bundles into
> the nifi-mongodb-bundle. That's something I missed while reviewing the
> PR that put them in standard services. I don't see a direct dependency
> on nifi-standard-services, and if the nifi-mongodb-client-service-api
> needs the nifi-standard-services-api as a dependency, it can make it a
> NAR dependency.
> 
> We might want to visit this as a much broader case, since I believe we
> could run into this with other services APIs (Elasticsearch, HBase,
> etc.)? Certainly when the Extension Registry becomes a thing, we might
> not want "external" service APIs to be part of
> nifi-standard-services-api.
> 
> Regards,
> Matt
> 
> 
> On Mon, Mar 26, 2018 at 5:03 PM, Brian Ghigiarelli <
>> briang...@gmail.com
 
> wrote:
>> Thanks, Bryan! Sure enough, we have nifi-standard-services-api-nar
>> as
>>> a
>> parent to use the standard SSLContextService. Sounds like upgrading
>>> the
>> mongo-java-driver for the base build is the way to go for us.
>> 
>> Thanks again,
>> Brian
>> On Mon, Mar 26, 2018 at 15:29 Bryan Bende  wrote:
>> 
>>> Brian,
>>> 
>>> Is your custom processor using the MongoDBClientService provided by
>>> NiFI's standard services API? or does your NAR have a parent of
>>> nifi-standard-services-api-nar to use other services?
>>> 
>>> Looking at where the Mongo JARs are from a build of master...
>>> 
>>> find work/nar/ -name *mongo-java*.jar
>>> 
>>> 
> work/nar//extensions/nifi-standard-services-api-nar-1.6.
>>> 0-SNAPSHOT.nar-unpacked/META-

Re: Class Loading Conflicts - Different JAR Versions

2018-03-26 Thread Brian Ghigiarelli
Thanks for the clarification, Mike.

My primary motivation for this upgrade is to support an aggregation
pipeline with the $out stage. Support for this in the Java driver was
introduced in 3.4 via https://jira.mongodb.org/browse/JAVA-2254. Prior to
this, I believe you had to use the cursor to query all of the results,
which suffers from both query performance issues and concurrency issues for
the data flow if we're trying to overwrite an entire collection at once.
That said, if I'm missing something, I'm happy to learn!

Thanks again,
Brian

On Mon, Mar 26, 2018 at 7:57 PM Mike Thomsen  wrote:

> I was just following a convention at the time. So unless something breaks
> because of the move, I don't see any reason why it would be an issue to
> move it.
>
> In fact, with NIFI-4325 the only reason I put the new ElasticSearch
> service/api in the standard-services segment of the code base was I ran
> into a bizarre issue at runtime where I could define the controller
> service, but the processor had no idea it was there. So that too might
> warrant some extra eyes now that #4325 was added to master today.
>
> FWIW, I can't think of any reason why the MongoDB client service needs 3.4
> or 3.6 over 3.2.
>
> Brian, feel free to ping me on the review.
>
> Thanks,
>
> Mike
>
> On Mon, Mar 26, 2018 at 6:59 PM, Matt Burgess 
> wrote:
>
> > Brian (this one's all you ;),
> >
> > I think that PR is quite welcome in my opinion, but I'd like to get
> > Mike Thomsen's and others' opinions on the subject too, I think Mike
> > wrote the original service (or at the least is very knowledgable about
> > Mongo and NiFi), he might have run into issues that led him to put it
> > there for a reason. If not, let's do it, if you're willing to submit
> > the contribution I/we'd be more than happy to review/incorporate it :)
> >
> > Regards,
> > Matt
> >
> >
> > On Mon, Mar 26, 2018 at 6:20 PM, Brian Ghigiarelli 
> > wrote:
> > > Matt,
> > >
> > > +1 [non-binding] for the idea to move the Mongo dependencies into that
> > > bundle. I think it will likely need the NAR dependency on
> > > nifi-standard-services-api in order to provide a link to the SSL
> Context
> > > Service. Is that ticket / PR worthy as a one-off in the short term? No
> > > doubt the Extension Registry will be a powerful capability.
> > >
> > > Also, +2 for the greeting, though Bryan may choose to put the "y"
> first.
> > :-)
> > >
> > > Thanks,
> > > Brian
> > >
> > > On Mon, Mar 26, 2018 at 5:13 PM Matt Burgess 
> > wrote:
> > >
> > >> Bri/yan,
> > >>
> > >> IMO I think we'd be better off with moving the
> > >> nifi-mongodb-client-service-api and nifi-mongodb-services bundles into
> > >> the nifi-mongodb-bundle. That's something I missed while reviewing the
> > >> PR that put them in standard services. I don't see a direct dependency
> > >> on nifi-standard-services, and if the nifi-mongodb-client-service-api
> > >> needs the nifi-standard-services-api as a dependency, it can make it a
> > >> NAR dependency.
> > >>
> > >> We might want to visit this as a much broader case, since I believe we
> > >> could run into this with other services APIs (Elasticsearch, HBase,
> > >> etc.)? Certainly when the Extension Registry becomes a thing, we might
> > >> not want "external" service APIs to be part of
> > >> nifi-standard-services-api.
> > >>
> > >> Regards,
> > >> Matt
> > >>
> > >>
> > >> On Mon, Mar 26, 2018 at 5:03 PM, Brian Ghigiarelli <
> briang...@gmail.com
> > >
> > >> wrote:
> > >> > Thanks, Bryan! Sure enough, we have nifi-standard-services-api-nar
> as
> > a
> > >> > parent to use the standard SSLContextService. Sounds like upgrading
> > the
> > >> > mongo-java-driver for the base build is the way to go for us.
> > >> >
> > >> > Thanks again,
> > >> > Brian
> > >> > On Mon, Mar 26, 2018 at 15:29 Bryan Bende  wrote:
> > >> >
> > >> >> Brian,
> > >> >>
> > >> >> Is your custom processor using the MongoDBClientService provided by
> > >> >> NiFI's standard services API? or does your NAR have a parent of
> > >> >> nifi-standard-services-api-nar to use other services?
> > >> >>
> > >> >> Looking at where the Mongo JARs are from a build of master...
> > >> >>
> > >> >> find work/nar/ -name *mongo-java*.jar
> > >> >>
> > >> >>
> > >> work/nar//extensions/nifi-standard-services-api-nar-1.6.
> > 0-SNAPSHOT.nar-unpacked/META-INF/bundled-dependencies/
> > mongo-java-driver-3.2.2.jar
> > >> >>
> > >> >>
> > >> work/nar//extensions/nifi-mongodb-services-nar-1.6.0-
> > SNAPSHOT.nar-unpacked/META-INF/bundled-dependencies/
> > mongo-java-driver-3.2.2.jar
> > >> >>
> > >> >>
> > >> work/nar//extensions/nifi-mongodb-nar-1.6.0-SNAPSHOT.
> > nar-unpacked/META-INF/bundled-dependencies/mongo-java-driver-3.2.2.jar
> > >> >>
> > >> >> I think the issue is that if your NAR has
> > >> >> nifi-standard-services-api-nar as a parent NAR (which it probably
> > does
> > >> >> to use SSLContext service, or any other standard service) then you
> > are
> > >> >> getting mongo-java-driver-3.2.2 fr

Re: Class Loading Conflicts - Different JAR Versions

2018-03-26 Thread Mike Thomsen
I was just following a convention at the time. So unless something breaks
because of the move, I don't see any reason why it would be an issue to
move it.

In fact, with NIFI-4325 the only reason I put the new ElasticSearch
service/api in the standard-services segment of the code base was I ran
into a bizarre issue at runtime where I could define the controller
service, but the processor had no idea it was there. So that too might
warrant some extra eyes now that #4325 was added to master today.

FWIW, I can't think of any reason why the MongoDB client service needs 3.4
or 3.6 over 3.2.

Brian, feel free to ping me on the review.

Thanks,

Mike

On Mon, Mar 26, 2018 at 6:59 PM, Matt Burgess  wrote:

> Brian (this one's all you ;),
>
> I think that PR is quite welcome in my opinion, but I'd like to get
> Mike Thomsen's and others' opinions on the subject too, I think Mike
> wrote the original service (or at the least is very knowledgable about
> Mongo and NiFi), he might have run into issues that led him to put it
> there for a reason. If not, let's do it, if you're willing to submit
> the contribution I/we'd be more than happy to review/incorporate it :)
>
> Regards,
> Matt
>
>
> On Mon, Mar 26, 2018 at 6:20 PM, Brian Ghigiarelli 
> wrote:
> > Matt,
> >
> > +1 [non-binding] for the idea to move the Mongo dependencies into that
> > bundle. I think it will likely need the NAR dependency on
> > nifi-standard-services-api in order to provide a link to the SSL Context
> > Service. Is that ticket / PR worthy as a one-off in the short term? No
> > doubt the Extension Registry will be a powerful capability.
> >
> > Also, +2 for the greeting, though Bryan may choose to put the "y" first.
> :-)
> >
> > Thanks,
> > Brian
> >
> > On Mon, Mar 26, 2018 at 5:13 PM Matt Burgess 
> wrote:
> >
> >> Bri/yan,
> >>
> >> IMO I think we'd be better off with moving the
> >> nifi-mongodb-client-service-api and nifi-mongodb-services bundles into
> >> the nifi-mongodb-bundle. That's something I missed while reviewing the
> >> PR that put them in standard services. I don't see a direct dependency
> >> on nifi-standard-services, and if the nifi-mongodb-client-service-api
> >> needs the nifi-standard-services-api as a dependency, it can make it a
> >> NAR dependency.
> >>
> >> We might want to visit this as a much broader case, since I believe we
> >> could run into this with other services APIs (Elasticsearch, HBase,
> >> etc.)? Certainly when the Extension Registry becomes a thing, we might
> >> not want "external" service APIs to be part of
> >> nifi-standard-services-api.
> >>
> >> Regards,
> >> Matt
> >>
> >>
> >> On Mon, Mar 26, 2018 at 5:03 PM, Brian Ghigiarelli  >
> >> wrote:
> >> > Thanks, Bryan! Sure enough, we have nifi-standard-services-api-nar as
> a
> >> > parent to use the standard SSLContextService. Sounds like upgrading
> the
> >> > mongo-java-driver for the base build is the way to go for us.
> >> >
> >> > Thanks again,
> >> > Brian
> >> > On Mon, Mar 26, 2018 at 15:29 Bryan Bende  wrote:
> >> >
> >> >> Brian,
> >> >>
> >> >> Is your custom processor using the MongoDBClientService provided by
> >> >> NiFI's standard services API? or does your NAR have a parent of
> >> >> nifi-standard-services-api-nar to use other services?
> >> >>
> >> >> Looking at where the Mongo JARs are from a build of master...
> >> >>
> >> >> find work/nar/ -name *mongo-java*.jar
> >> >>
> >> >>
> >> work/nar//extensions/nifi-standard-services-api-nar-1.6.
> 0-SNAPSHOT.nar-unpacked/META-INF/bundled-dependencies/
> mongo-java-driver-3.2.2.jar
> >> >>
> >> >>
> >> work/nar//extensions/nifi-mongodb-services-nar-1.6.0-
> SNAPSHOT.nar-unpacked/META-INF/bundled-dependencies/
> mongo-java-driver-3.2.2.jar
> >> >>
> >> >>
> >> work/nar//extensions/nifi-mongodb-nar-1.6.0-SNAPSHOT.
> nar-unpacked/META-INF/bundled-dependencies/mongo-java-driver-3.2.2.jar
> >> >>
> >> >> I think the issue is that if your NAR has
> >> >> nifi-standard-services-api-nar as a parent NAR (which it probably
> does
> >> >> to use SSLContext service, or any other standard service) then you
> are
> >> >> getting mongo-java-driver-3.2.2 from MongoDBClientService since we
> >> >> have parent first class loading.
> >> >>
> >> >> Given this situation I think there are only two options... not having
> >> >> nifi-standard-services-api-nar as a parent (which stops you from
> using
> >> >> all standard services), or upgrading the version of mongo-java-driver
> >> >> used by MongoDBClientService.
> >> >>
> >> >> -Bryan
> >> >>
> >> >>
> >> >> On Mon, Mar 26, 2018 at 3:16 PM, Brian Ghigiarelli <
> briang...@gmail.com
> >> >
> >> >> wrote:
> >> >> > Hey all,
> >> >> >
> >> >> > Is there a means of troubleshooting a custom NAR that seems to be
> >> having
> >> >> > runtime conflicts by picking up an older JAR that's provided by the
> >> NiFi
> >> >> > standard bundle?
> >> >> >
> >> >> > In this particular case, I'm using some custom processors that are
> >> built
> >> >> > against NiFi 1.4.0 

Re: Class Loading Conflicts - Different JAR Versions

2018-03-26 Thread Matt Burgess
Brian (this one's all you ;),

I think that PR is quite welcome in my opinion, but I'd like to get
Mike Thomsen's and others' opinions on the subject too, I think Mike
wrote the original service (or at the least is very knowledgable about
Mongo and NiFi), he might have run into issues that led him to put it
there for a reason. If not, let's do it, if you're willing to submit
the contribution I/we'd be more than happy to review/incorporate it :)

Regards,
Matt


On Mon, Mar 26, 2018 at 6:20 PM, Brian Ghigiarelli  wrote:
> Matt,
>
> +1 [non-binding] for the idea to move the Mongo dependencies into that
> bundle. I think it will likely need the NAR dependency on
> nifi-standard-services-api in order to provide a link to the SSL Context
> Service. Is that ticket / PR worthy as a one-off in the short term? No
> doubt the Extension Registry will be a powerful capability.
>
> Also, +2 for the greeting, though Bryan may choose to put the "y" first. :-)
>
> Thanks,
> Brian
>
> On Mon, Mar 26, 2018 at 5:13 PM Matt Burgess  wrote:
>
>> Bri/yan,
>>
>> IMO I think we'd be better off with moving the
>> nifi-mongodb-client-service-api and nifi-mongodb-services bundles into
>> the nifi-mongodb-bundle. That's something I missed while reviewing the
>> PR that put them in standard services. I don't see a direct dependency
>> on nifi-standard-services, and if the nifi-mongodb-client-service-api
>> needs the nifi-standard-services-api as a dependency, it can make it a
>> NAR dependency.
>>
>> We might want to visit this as a much broader case, since I believe we
>> could run into this with other services APIs (Elasticsearch, HBase,
>> etc.)? Certainly when the Extension Registry becomes a thing, we might
>> not want "external" service APIs to be part of
>> nifi-standard-services-api.
>>
>> Regards,
>> Matt
>>
>>
>> On Mon, Mar 26, 2018 at 5:03 PM, Brian Ghigiarelli 
>> wrote:
>> > Thanks, Bryan! Sure enough, we have nifi-standard-services-api-nar as a
>> > parent to use the standard SSLContextService. Sounds like upgrading the
>> > mongo-java-driver for the base build is the way to go for us.
>> >
>> > Thanks again,
>> > Brian
>> > On Mon, Mar 26, 2018 at 15:29 Bryan Bende  wrote:
>> >
>> >> Brian,
>> >>
>> >> Is your custom processor using the MongoDBClientService provided by
>> >> NiFI's standard services API? or does your NAR have a parent of
>> >> nifi-standard-services-api-nar to use other services?
>> >>
>> >> Looking at where the Mongo JARs are from a build of master...
>> >>
>> >> find work/nar/ -name *mongo-java*.jar
>> >>
>> >>
>> work/nar//extensions/nifi-standard-services-api-nar-1.6.0-SNAPSHOT.nar-unpacked/META-INF/bundled-dependencies/mongo-java-driver-3.2.2.jar
>> >>
>> >>
>> work/nar//extensions/nifi-mongodb-services-nar-1.6.0-SNAPSHOT.nar-unpacked/META-INF/bundled-dependencies/mongo-java-driver-3.2.2.jar
>> >>
>> >>
>> work/nar//extensions/nifi-mongodb-nar-1.6.0-SNAPSHOT.nar-unpacked/META-INF/bundled-dependencies/mongo-java-driver-3.2.2.jar
>> >>
>> >> I think the issue is that if your NAR has
>> >> nifi-standard-services-api-nar as a parent NAR (which it probably does
>> >> to use SSLContext service, or any other standard service) then you are
>> >> getting mongo-java-driver-3.2.2 from MongoDBClientService since we
>> >> have parent first class loading.
>> >>
>> >> Given this situation I think there are only two options... not having
>> >> nifi-standard-services-api-nar as a parent (which stops you from using
>> >> all standard services), or upgrading the version of mongo-java-driver
>> >> used by MongoDBClientService.
>> >>
>> >> -Bryan
>> >>
>> >>
>> >> On Mon, Mar 26, 2018 at 3:16 PM, Brian Ghigiarelli > >
>> >> wrote:
>> >> > Hey all,
>> >> >
>> >> > Is there a means of troubleshooting a custom NAR that seems to be
>> having
>> >> > runtime conflicts by picking up an older JAR that's provided by the
>> NiFi
>> >> > standard bundle?
>> >> >
>> >> > In this particular case, I'm using some custom processors that are
>> built
>> >> > against NiFi 1.4.0 and have a dependency on MongoDB 3.6.3. At runtime,
>> >> I'm
>> >> > seeing the processor use classes from MongoDB 3.2.2 that's provided by
>> >> > NiFi. Both NiFi and the custom NAR compile successfully on their own,
>> but
>> >> > using the custom NAR in NiFi causes NoSuchMethodError's due to a new
>> >> method
>> >> > only available in MongoDB 3.4+.
>> >> >
>> >> > Thanks,
>> >> > Brian
>> >>
>>


Re: Class Loading Conflicts - Different JAR Versions

2018-03-26 Thread Brian Ghigiarelli
Matt,

+1 [non-binding] for the idea to move the Mongo dependencies into that
bundle. I think it will likely need the NAR dependency on
nifi-standard-services-api in order to provide a link to the SSL Context
Service. Is that ticket / PR worthy as a one-off in the short term? No
doubt the Extension Registry will be a powerful capability.

Also, +2 for the greeting, though Bryan may choose to put the "y" first. :-)

Thanks,
Brian

On Mon, Mar 26, 2018 at 5:13 PM Matt Burgess  wrote:

> Bri/yan,
>
> IMO I think we'd be better off with moving the
> nifi-mongodb-client-service-api and nifi-mongodb-services bundles into
> the nifi-mongodb-bundle. That's something I missed while reviewing the
> PR that put them in standard services. I don't see a direct dependency
> on nifi-standard-services, and if the nifi-mongodb-client-service-api
> needs the nifi-standard-services-api as a dependency, it can make it a
> NAR dependency.
>
> We might want to visit this as a much broader case, since I believe we
> could run into this with other services APIs (Elasticsearch, HBase,
> etc.)? Certainly when the Extension Registry becomes a thing, we might
> not want "external" service APIs to be part of
> nifi-standard-services-api.
>
> Regards,
> Matt
>
>
> On Mon, Mar 26, 2018 at 5:03 PM, Brian Ghigiarelli 
> wrote:
> > Thanks, Bryan! Sure enough, we have nifi-standard-services-api-nar as a
> > parent to use the standard SSLContextService. Sounds like upgrading the
> > mongo-java-driver for the base build is the way to go for us.
> >
> > Thanks again,
> > Brian
> > On Mon, Mar 26, 2018 at 15:29 Bryan Bende  wrote:
> >
> >> Brian,
> >>
> >> Is your custom processor using the MongoDBClientService provided by
> >> NiFI's standard services API? or does your NAR have a parent of
> >> nifi-standard-services-api-nar to use other services?
> >>
> >> Looking at where the Mongo JARs are from a build of master...
> >>
> >> find work/nar/ -name *mongo-java*.jar
> >>
> >>
> work/nar//extensions/nifi-standard-services-api-nar-1.6.0-SNAPSHOT.nar-unpacked/META-INF/bundled-dependencies/mongo-java-driver-3.2.2.jar
> >>
> >>
> work/nar//extensions/nifi-mongodb-services-nar-1.6.0-SNAPSHOT.nar-unpacked/META-INF/bundled-dependencies/mongo-java-driver-3.2.2.jar
> >>
> >>
> work/nar//extensions/nifi-mongodb-nar-1.6.0-SNAPSHOT.nar-unpacked/META-INF/bundled-dependencies/mongo-java-driver-3.2.2.jar
> >>
> >> I think the issue is that if your NAR has
> >> nifi-standard-services-api-nar as a parent NAR (which it probably does
> >> to use SSLContext service, or any other standard service) then you are
> >> getting mongo-java-driver-3.2.2 from MongoDBClientService since we
> >> have parent first class loading.
> >>
> >> Given this situation I think there are only two options... not having
> >> nifi-standard-services-api-nar as a parent (which stops you from using
> >> all standard services), or upgrading the version of mongo-java-driver
> >> used by MongoDBClientService.
> >>
> >> -Bryan
> >>
> >>
> >> On Mon, Mar 26, 2018 at 3:16 PM, Brian Ghigiarelli  >
> >> wrote:
> >> > Hey all,
> >> >
> >> > Is there a means of troubleshooting a custom NAR that seems to be
> having
> >> > runtime conflicts by picking up an older JAR that's provided by the
> NiFi
> >> > standard bundle?
> >> >
> >> > In this particular case, I'm using some custom processors that are
> built
> >> > against NiFi 1.4.0 and have a dependency on MongoDB 3.6.3. At runtime,
> >> I'm
> >> > seeing the processor use classes from MongoDB 3.2.2 that's provided by
> >> > NiFi. Both NiFi and the custom NAR compile successfully on their own,
> but
> >> > using the custom NAR in NiFi causes NoSuchMethodError's due to a new
> >> method
> >> > only available in MongoDB 3.4+.
> >> >
> >> > Thanks,
> >> > Brian
> >>
>


Re: Class Loading Conflicts - Different JAR Versions

2018-03-26 Thread Matt Burgess
Bri/yan,

IMO I think we'd be better off with moving the
nifi-mongodb-client-service-api and nifi-mongodb-services bundles into
the nifi-mongodb-bundle. That's something I missed while reviewing the
PR that put them in standard services. I don't see a direct dependency
on nifi-standard-services, and if the nifi-mongodb-client-service-api
needs the nifi-standard-services-api as a dependency, it can make it a
NAR dependency.

We might want to visit this as a much broader case, since I believe we
could run into this with other services APIs (Elasticsearch, HBase,
etc.)? Certainly when the Extension Registry becomes a thing, we might
not want "external" service APIs to be part of
nifi-standard-services-api.

Regards,
Matt


On Mon, Mar 26, 2018 at 5:03 PM, Brian Ghigiarelli  wrote:
> Thanks, Bryan! Sure enough, we have nifi-standard-services-api-nar as a
> parent to use the standard SSLContextService. Sounds like upgrading the
> mongo-java-driver for the base build is the way to go for us.
>
> Thanks again,
> Brian
> On Mon, Mar 26, 2018 at 15:29 Bryan Bende  wrote:
>
>> Brian,
>>
>> Is your custom processor using the MongoDBClientService provided by
>> NiFI's standard services API? or does your NAR have a parent of
>> nifi-standard-services-api-nar to use other services?
>>
>> Looking at where the Mongo JARs are from a build of master...
>>
>> find work/nar/ -name *mongo-java*.jar
>>
>> work/nar//extensions/nifi-standard-services-api-nar-1.6.0-SNAPSHOT.nar-unpacked/META-INF/bundled-dependencies/mongo-java-driver-3.2.2.jar
>>
>> work/nar//extensions/nifi-mongodb-services-nar-1.6.0-SNAPSHOT.nar-unpacked/META-INF/bundled-dependencies/mongo-java-driver-3.2.2.jar
>>
>> work/nar//extensions/nifi-mongodb-nar-1.6.0-SNAPSHOT.nar-unpacked/META-INF/bundled-dependencies/mongo-java-driver-3.2.2.jar
>>
>> I think the issue is that if your NAR has
>> nifi-standard-services-api-nar as a parent NAR (which it probably does
>> to use SSLContext service, or any other standard service) then you are
>> getting mongo-java-driver-3.2.2 from MongoDBClientService since we
>> have parent first class loading.
>>
>> Given this situation I think there are only two options... not having
>> nifi-standard-services-api-nar as a parent (which stops you from using
>> all standard services), or upgrading the version of mongo-java-driver
>> used by MongoDBClientService.
>>
>> -Bryan
>>
>>
>> On Mon, Mar 26, 2018 at 3:16 PM, Brian Ghigiarelli 
>> wrote:
>> > Hey all,
>> >
>> > Is there a means of troubleshooting a custom NAR that seems to be having
>> > runtime conflicts by picking up an older JAR that's provided by the NiFi
>> > standard bundle?
>> >
>> > In this particular case, I'm using some custom processors that are built
>> > against NiFi 1.4.0 and have a dependency on MongoDB 3.6.3. At runtime,
>> I'm
>> > seeing the processor use classes from MongoDB 3.2.2 that's provided by
>> > NiFi. Both NiFi and the custom NAR compile successfully on their own, but
>> > using the custom NAR in NiFi causes NoSuchMethodError's due to a new
>> method
>> > only available in MongoDB 3.4+.
>> >
>> > Thanks,
>> > Brian
>>


Re: Class Loading Conflicts - Different JAR Versions

2018-03-26 Thread Brian Ghigiarelli
Thanks, Bryan! Sure enough, we have nifi-standard-services-api-nar as a
parent to use the standard SSLContextService. Sounds like upgrading the
mongo-java-driver for the base build is the way to go for us.

Thanks again,
Brian
On Mon, Mar 26, 2018 at 15:29 Bryan Bende  wrote:

> Brian,
>
> Is your custom processor using the MongoDBClientService provided by
> NiFI's standard services API? or does your NAR have a parent of
> nifi-standard-services-api-nar to use other services?
>
> Looking at where the Mongo JARs are from a build of master...
>
> find work/nar/ -name *mongo-java*.jar
>
> work/nar//extensions/nifi-standard-services-api-nar-1.6.0-SNAPSHOT.nar-unpacked/META-INF/bundled-dependencies/mongo-java-driver-3.2.2.jar
>
> work/nar//extensions/nifi-mongodb-services-nar-1.6.0-SNAPSHOT.nar-unpacked/META-INF/bundled-dependencies/mongo-java-driver-3.2.2.jar
>
> work/nar//extensions/nifi-mongodb-nar-1.6.0-SNAPSHOT.nar-unpacked/META-INF/bundled-dependencies/mongo-java-driver-3.2.2.jar
>
> I think the issue is that if your NAR has
> nifi-standard-services-api-nar as a parent NAR (which it probably does
> to use SSLContext service, or any other standard service) then you are
> getting mongo-java-driver-3.2.2 from MongoDBClientService since we
> have parent first class loading.
>
> Given this situation I think there are only two options... not having
> nifi-standard-services-api-nar as a parent (which stops you from using
> all standard services), or upgrading the version of mongo-java-driver
> used by MongoDBClientService.
>
> -Bryan
>
>
> On Mon, Mar 26, 2018 at 3:16 PM, Brian Ghigiarelli 
> wrote:
> > Hey all,
> >
> > Is there a means of troubleshooting a custom NAR that seems to be having
> > runtime conflicts by picking up an older JAR that's provided by the NiFi
> > standard bundle?
> >
> > In this particular case, I'm using some custom processors that are built
> > against NiFi 1.4.0 and have a dependency on MongoDB 3.6.3. At runtime,
> I'm
> > seeing the processor use classes from MongoDB 3.2.2 that's provided by
> > NiFi. Both NiFi and the custom NAR compile successfully on their own, but
> > using the custom NAR in NiFi causes NoSuchMethodError's due to a new
> method
> > only available in MongoDB 3.4+.
> >
> > Thanks,
> > Brian
>


Re: Class Loading Conflicts - Different JAR Versions

2018-03-26 Thread Bryan Bende
Brian,

Is your custom processor using the MongoDBClientService provided by
NiFI's standard services API? or does your NAR have a parent of
nifi-standard-services-api-nar to use other services?

Looking at where the Mongo JARs are from a build of master...

find work/nar/ -name *mongo-java*.jar
work/nar//extensions/nifi-standard-services-api-nar-1.6.0-SNAPSHOT.nar-unpacked/META-INF/bundled-dependencies/mongo-java-driver-3.2.2.jar
work/nar//extensions/nifi-mongodb-services-nar-1.6.0-SNAPSHOT.nar-unpacked/META-INF/bundled-dependencies/mongo-java-driver-3.2.2.jar
work/nar//extensions/nifi-mongodb-nar-1.6.0-SNAPSHOT.nar-unpacked/META-INF/bundled-dependencies/mongo-java-driver-3.2.2.jar

I think the issue is that if your NAR has
nifi-standard-services-api-nar as a parent NAR (which it probably does
to use SSLContext service, or any other standard service) then you are
getting mongo-java-driver-3.2.2 from MongoDBClientService since we
have parent first class loading.

Given this situation I think there are only two options... not having
nifi-standard-services-api-nar as a parent (which stops you from using
all standard services), or upgrading the version of mongo-java-driver
used by MongoDBClientService.

-Bryan


On Mon, Mar 26, 2018 at 3:16 PM, Brian Ghigiarelli  wrote:
> Hey all,
>
> Is there a means of troubleshooting a custom NAR that seems to be having
> runtime conflicts by picking up an older JAR that's provided by the NiFi
> standard bundle?
>
> In this particular case, I'm using some custom processors that are built
> against NiFi 1.4.0 and have a dependency on MongoDB 3.6.3. At runtime, I'm
> seeing the processor use classes from MongoDB 3.2.2 that's provided by
> NiFi. Both NiFi and the custom NAR compile successfully on their own, but
> using the custom NAR in NiFi causes NoSuchMethodError's due to a new method
> only available in MongoDB 3.4+.
>
> Thanks,
> Brian