[ 
https://issues.apache.org/jira/browse/NIFIREG-240?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Bryan Bende resolved NIFIREG-240.
---------------------------------
       Resolution: Fixed
    Fix Version/s: 0.4.0

> Add support for MariaDB database as configuration backend
> ---------------------------------------------------------
>
>                 Key: NIFIREG-240
>                 URL: https://issues.apache.org/jira/browse/NIFIREG-240
>             Project: NiFi Registry
>          Issue Type: Improvement
>    Affects Versions: 0.3.0
>            Reporter: Michal Klempa
>            Assignee: Bryan Bende
>            Priority: Minor
>             Fix For: 0.4.0
>
>
> I have tried to use MariaDB 10.3 with NiFi Registry, with no luck. Although 
> there should be a way to enable MariaDB as a backend service instead of H2.
>  
> Environment:
> NiFi Registry 0.3.0 (inside Docker, but this does not really affect the 
> output)
> MariaDB Java Client 2.3.0 - mariadb-java-client-2.3.0.jar (not 2.4.1 due to 
> [https://github.com/flyway/flyway/issues/2289#issuecomment-459481080)]
> Configuration:
> nifi-registry.properties:
> {code:java}
> nifi.registry.db.url=jdbc:mariadb://database:3306/db
> nifi.registry.db.driver.class=org.mariadb.jdbc.Driver
> nifi.registry.db.driver.directory=/opt/nifi-registry/libs/
> nifi.registry.db.username=root
> nifi.registry.db.password=myPassword{code}
> The {{mariadb-java-client-2.3.0.jar}} was placed to
> {code:java}
> /opt/nifi-registry/libs/{code}
>  
> Steps to reproduce:
>  # unpack nifi registry to {{/opt/nifi-registry/nifi-registry-0.3.0}}
>  # set the {{nifi-registry.properties}} as above
>  # add {{mariadb-java-client-2.3.0.jar}} to {{/opt/nifi-registry/libs/}}
>  # start
> Or alternatively, use the Docker image I was developping and during which I 
> found this issue.
> The docker-compose file is 
> [https://github.com/michalklempa/docker-nifi-registry/blob/master/docker-compose.mariadb.yml|https://github.com/michalklempa/docker-nifi-registry/blob/mariadb/docker-compose.mariadb.yml]
>  
> Expected behavior: working Registry
> Actual behavior:
> {code:java}
> nifi-registry_1  | 2019-03-24 17:55:39,771 WARN [main] 
> o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext Exception 
> encountered during context initialization - cancelling refresh attempt: 
> org.springframework.beans.factory.UnsatisfiedDependencyException: Error 
> creating bean with name 'accessPolicyResource' defined in file 
> [/opt/nifi-registry/nifi-registry-0.3.0/work/jetty/nifi-registry-web-api-0.3.0.war/webapp/WEB-INF/classes/org/apache/nifi/registry/web/api/AccessPolicyResource.class]:
>  Unsatisfied dependency expressed through constructor parameter 1; nested 
> exception is 
> org.springframework.beans.factory.UnsatisfiedDependencyException: Error 
> creating bean with name 'authorizationService' defined in URL 
> [jar:file:/opt/nifi-registry/nifi-registry-0.3.0/work/jetty/nifi-registry-web-api-0.3.0.war/webapp/WEB-INF/lib/nifi-registry-framework-0.3.0.jar!/org/apache/nifi/registry/service/AuthorizationService.class]:
>  Unsatisfied dependency expressed through constructor parameter 2; nested 
> exception is 
> org.springframework.beans.factory.UnsatisfiedDependencyException: Error 
> creating bean with name 'registryService' defined in URL 
> [jar:file:/opt/nifi-registry/nifi-registry-0.3.0/work/jetty/nifi-registry-web-api-0.3.0.war/webapp/WEB-INF/lib/nifi-registry-framework-0.3.0.jar!/org/apache/nifi/registry/service/RegistryService.class]:
>  Unsatisfied dependency expressed through constructor parameter 0; nested 
> exception is 
> org.springframework.beans.factory.UnsatisfiedDependencyException: Error 
> creating bean with name 'databaseMetadataService' defined in URL 
> [jar:file:/opt/nifi-registry/nifi-registry-0.3.0/work/jetty/nifi-registry-web-api-0.3.0.war/webapp/WEB-INF/lib/nifi-registry-framework-0.3.0.jar!/org/apache/nifi/registry/db/DatabaseMetadataService.class]:
>  Unsatisfied dependency expressed through constructor parameter 0; nested 
> exception is org.springframework.beans.factory.BeanCreationException: Error 
> creating bean with name 'flywayInitializer' defined in class path resource 
> [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]:
>  Invocation of init method failed; nested exception is 
> org.flywaydb.core.internal.command.DbMigrate$FlywayMigrateSqlException:
> nifi-registry_1  | Migration V2__Initial.sql failed
> nifi-registry_1  | --------------------------------
> nifi-registry_1  | SQL State  : 42000
> nifi-registry_1  | Error Code : 1071
> nifi-registry_1  | Message    : (conn=8) Specified key was too long; max key 
> length is 3072 bytes
> nifi-registry_1  | Location   : db/migration/V2__Initial.sql 
> (/opt/nifi-registry/nifi-registry-0.3.0/file:/opt/nifi-registry/nifi-registry-0.3.0/work/jetty/nifi-registry-web-api-0.3.0.war/webapp/WEB-INF/lib/nifi-registry-framework-0.3.0.jar!/db/migration/V2__Initial.sql)
> nifi-registry_1  | Line       : 54
> nifi-registry_1  | Statement  : CREATE TABLE SIGNING_KEY (
> nifi-registry_1  |     ID VARCHAR(50) NOT NULL,
> nifi-registry_1  |     TENANT_IDENTITY VARCHAR(4096) NOT NULL,
> nifi-registry_1  |     KEY_VALUE VARCHAR(50) NOT NULL,
> nifi-registry_1  |     CONSTRAINT PK__SIGNING_KEY_ID PRIMARY KEY (ID),
> nifi-registry_1  |     CONSTRAINT UNIQUE__SIGNING_KEY_TENANT_IDENTITY UNIQUE 
> (TENANT_IDENTITY)
> nifi-registry_1  | )
> nifi-registry_1  |
> nifi-registry_1  | 2019-03-24 17:55:39,772 INFO [main] 
> o.a.nifi.registry.event.EventService Shutting down event consumer...{code}
>  
> There are various SQL dialect differences.
> I was able to shorten TENANT_IDENTITY varchar to 1096:
> {code:java}
> SIGNING_KEY.TENANT_IDENTITY VARCHAR(1096){code}
> Then there was mariadb complaining about lenght of constraint name 
> UNIQUE__BUNDLE_VERSION_DEPENDENCY_BUNDLE_ID_GROUP_ARTIFACT_VERSION
> and finally the DROP CONSTRAINT for FOREIGN KEY syntax is different.
> Reverse diff of my changes can be seen here:
> [https://github.com/michalklempa/docker-nifi-registry/commit/2a78f5f6df0b00fa3011da9ee49c65a412012fcc]
>  
> I am unsure is such changes are compatible or not with the Registry codebase. 
> Further work is required. And since I was creating the schema manually, NiFi 
> Registry did not start up either - since it found existing schema without 
> some required metadata.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to