[ 
https://issues.apache.org/jira/browse/NIFI-322?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14384253#comment-14384253
 ] 

Mark Payne commented on NIFI-322:
---------------------------------

Toivo,

OK so the patch definitely applies now! Thanks for all of the pain that you 
went through there!

I pulled it into the build and played with it a bit. Of course, we don't have 
any processor written yet to use it that I know of, so it's hard to test, but 
just given how i'm able to configure it I would look into a few things:

* The service provides the ability to borrow a connection but not the ability 
to return the connection - that will probably be important! :)
* One of the unit test requires MariaDB to be running and available on 
localhost; should probably @Ignore that unit test with the indication that it 
is used for local testing only.
* Was a bit confused by the property name "Database" -- should call it 
"Database Type" or "Database Vendor" perhaps?
* I would not set a default port. The default value of 1 is pretty much 
guaranteed to need to be changed, so I wouldn't even supply a default.
* For the "Database Driver Class Name", I would make this property optional and 
only require it if they use "Other DB" because it should be known for all other 
choices. You can override the customValidate method to ensure that the value is 
populated if the database type is set to "Other DB".
* For the drivers that we offer, we need to ensure that all of them are 
license-compatible with Apache. For MariaDB, for instance, your docs say that 
it is free under GNU GPL. We cannot support anything that has a GPL license. 
See http://www.apache.org/legal/resolved.html for more information about which 
licenses are and are not OK for Apache.
* The root NOTICE file needs to be updated to include anything in the NOTICE 
files of the dependent jar files. I'm happy to assist with this; the guide is 
available at http://nifi.incubator.apache.org/development/licensing-guide.html. 
This part is unfortunately not fun. For any library that we bring in (and any 
transitive library that it brings in, and so on), we need to know exactly what 
license it is and include anything from that library's NOTICE file in our 
notice file.

* Max Total Connections appears to be a Sensitive property. I'm guessing this 
is a copy/paste error.
* In order to integrate the service into the build, a few poms need to be 
updated: 
** Root NiFi pom should add the module to its dependencyManagement; 
** nifi-assembly/pom.xml should pull in the nifi-dbcp-service-nar; 
** nifi-nar-bundles/nifi-standard-services/pom.xml should pull in the 
nifi-dbcp-service-bundle - it currently pulls in the api but not the actual 
implementation module.


Sorry, it looks like i provided a ton of feedback, but most of these are super 
minor tweaks. Overall, I think it's a great first version. I'm sure we'll find 
out more once we get a chance to develop the processors to interact with JDBC. 
:)

I know this service hasn't been at all trivial, because of needing to support 
arbitrary JAR files, etc. but you've stuck with it and done a great job! Just 
wanted to say thanks for all the effort you're putting in to help make NiFi 
awesome!

> New Database Connection Pooling Controller Service
> --------------------------------------------------
>
>                 Key: NIFI-322
>                 URL: https://issues.apache.org/jira/browse/NIFI-322
>             Project: Apache NiFi
>          Issue Type: New Feature
>          Components: Extensions
>            Reporter: Toivo Adams
>            Assignee: Mark Payne
>            Priority: Minor
>              Labels: controller
>         Attachments: DBCPServiceApacheDBCP14.java, DBCPServiceTest.java, 
> DatabaseSystemDescriptor.java, DatabaseSystems.java, 
> NIFI-322_01mar2015.patch, NIFI-322_03mar2015.patch, NIFI-322_08mar2015.patch, 
> NIFI-322_14mar2015.patch, NIFI-322_22mar2015.patch, NIFI-322_24mar2015.patch, 
> NIFI-322_26mar2015.patch, TestDatabaseSystems.java, TestProcessor.java
>
>
> Often DataFlows contain many processors which deal with database - select, 
> update or delete different data in different tables. 
> Yet database is same and connection pooling helps to speed up connecting to 
> database (open connection is fairly expensive). Also configuration must be 
> done only in one place. 
> Database Connection Pooling Controller Service helps to solve this in 
> consistent way. 
> related
> https://issues.apache.org/jira/browse/NIFI-293 : Add a JDBC Processor for 
> executing arbitrary SQL queries. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to