-
Bug
-
Resolution: Done
-
Blocker
-
fuse-7.4-GA
-
None
-
%
The various components involved in turning a Syndesis connection into a data virtualization have mismatched rules for what's a valid name, resulting in only lowercase letters and numbers being valid.
Generic steps to reproduce:
1. Create a connection
2. On the Data tab, create a new Data Virtualization
3. Click Import Data Source
4. Select any table from the data source
5. Publish the Data Virtualization
1. Connection name: PostgresDB
(this is the default connection that's created when deploying Syndesis)
The Data Virtualization can be created and built, but the vdb pod fails to start with the following message:
*************************** APPLICATION FAILED TO START *************************** Description: Configuration property name 'spring.datasource.PostgresDB' is not valid: Invalid characters: 'P', 'D', 'B' Bean: servletEndpointRegistrar Reason: Canonical names should be kebab-case ('-' separated), lowercase alpha-numeric characters and must start with a letter Action: Modify 'spring.datasource.PostgresDB' so that it conforms to the canonical names requirements.
2. Connection name: postgres-db
this is what the above error message suggests, however, when trying import the data source into a Data Virtualization, an error popup is show, with the browser console revealing the following message:
{"error":"DDL Parsing encountered unknown statement:\n-db_smallb (RowId long PRIMARY KEY, <...> FROM postgres-dbschemamodel.smallb;"}
The reason seems to be that postgres-db_smallb is not a valid Teiid table name (or needs to be quoted).
3. Connection name: postgres_db
just for good measure, I tried also snake_case name, expecting the same result as with CamelCase, however, I got a different error when starting up the pod:
*************************** APPLICATION FAILED TO START *************************** Description: The bean 'dataSource', defined in class path resource [org/teiid/spring/autoconfigure/TeiidAutoConfiguration.class], could not be registered. A bean with that name has already been defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Tomcat.class] and overriding is disabled. Action: Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
Not sure what to make of this one, could be a different issue, will need to investigate more.