[teiid-issues] [JBoss JIRA] (TEIID-4731) Unable to connect to MongoDB pod from JBoss Data Virtualization (on OpenShift)

Cojan van Ballegooijen (JIRA) issues at jboss.org
Tue Jan 31 05:18:00 EST 2017


Cojan van Ballegooijen created TEIID-4731:
---------------------------------------------

             Summary: Unable to connect to MongoDB pod from JBoss Data Virtualization (on OpenShift)
                 Key: TEIID-4731
                 URL: https://issues.jboss.org/browse/TEIID-4731
             Project: Teiid
          Issue Type: Enhancement
         Environment: I was running using JDV 6.3 running on OpenShift 3.4 and couldn't connect my VDB to mongodb. 

            Reporter: Cojan van Ballegooijen
            Assignee: Steven Hawkins
            Priority: Minor
         Attachments: products.js

It looks like the setup of the mongodb resource adapter is not documented correctly. Tested it also locally with the same issue when using an username/password to connect to a mongodb database.

15:26:01,386 WARN  [org.teiid.CONNECTOR] (http-127.0.0.1:8080-1) TEIID30003 Without required support property SelfJoins, pushdown will not be enabled for TableAlias on translator [mongodb, java:jboss/datasources/MongoDS].
15:26:01,626 INFO  [org.teiid.CONNECTOR] (Worker0_QueryProcessorQueue0) SELECT product.itemId AS c_0, product.name AS c_1, product.description AS c_2, product.price AS c_3 FROM product ORDER BY c_0
15:26:01,662 WARN  [org.teiid.CONNECTOR] (Worker0_QueryProcessorQueue0) Connector worker process failed for atomic-request=G8hRIMByScTW.0.0.0: org.teiid.translator.TranslatorException: { "serverUsed" : "localhost:27017" , "ok" : 0.0 , "errmsg" : "auth failed" , "code" : 18 , "codeName" : "AuthenticationFailed"}
        at org.teiid.translator.mongodb.MongoDBQueryExecution.execute(MongoDBQueryExecution.java:104) [translator-mongodb-8.12.8.6_3-redhat-2.jar:8.12.8.6_3-redhat-2]
        at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:366)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_121]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_121]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_121]
        at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_121]
        at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
        at com.sun.proxy.$Proxy96.execute(Unknown Source)
        at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:306)
        at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:112)
        at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:108)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [rt.jar:1.8.0_121]
        at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:65)
        at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:280)
        at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
        at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_121]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_121]
        at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_121]
Caused by: com.mongodb.CommandFailureException: { "serverUsed" : "localhost:27017" , "ok" : 0.0 , "errmsg" : "auth failed" , "code" : 18 , "codeName" : "AuthenticationFailed"}
        at com.mongodb.CommandResult.getException(CommandResult.java:76) [mongo-java-driver-2.13.1.jar:]
        at com.mongodb.CommandResult.throwOnError(CommandResult.java:140) [mongo-java-driver-2.13.1.jar:]
        at com.mongodb.DBPort$NativeAuthenticator.authenticate(DBPort.java:986) [mongo-java-driver-2.13.1.jar:]
        at com.mongodb.DBPort.authenticate(DBPort.java:432) [mongo-java-driver-2.13.1.jar:]
        at com.mongodb.DBPort.checkAuth(DBPort.java:443) [mongo-java-driver-2.13.1.jar:]
        at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:289) [mongo-java-driver-2.13.1.jar:]
        at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:269) [mongo-java-driver-2.13.1.jar:]
        at com.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:84) [mongo-java-driver-2.13.1.jar:]
        at com.mongodb.DB.command(DB.java:320) [mongo-java-driver-2.13.1.jar:]
        at com.mongodb.DB.command(DB.java:299) [mongo-java-driver-2.13.1.jar:]
        at com.mongodb.DBCollectionImpl.aggregate(DBCollectionImpl.java:99) [mongo-java-driver-2.13.1.jar:]
        at com.mongodb.DBCollection.aggregate(DBCollection.java:1649) [mongo-java-driver-2.13.1.jar:]
        at org.teiid.translator.mongodb.MongoDBQueryExecution.execute(MongoDBQueryExecution.java:102) [translator-mongodb-8.12.8.6_3-redhat-2.jar:8.12.8.6_3-redhat-2]
        ... 18 more

Solution is to add the SecurityType configuration parameter in the mongodb resource adapter configuration and set the value to SCRAM_SHA_1.

- Create a VDB
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<vdb name="CatalogVDB" version="1">
	<description/>
	<property name="validationDateTime" value="Thu Sep 01 10:33:00 CEST 2016"/>
	<property name="validationVersion" value="8.12.6"/>

	<model name="CatalogDB" type="VIRTUAL">
		<metadata type="DDL"><![CDATA[
			CREATE VIEW products (
				itemId integer,
				name string(50),
				description varchar(1024),
				price bigdecimal,
				CONSTRAINT ITEMID_UK UNIQUE (itemId)
			) AS select * from Products_MONGODB.product			
		]]></metadata>
	</model>

	<model name="Products_MONGODB">
		<source connection-jndi-name="java:jboss/datasources/MongoDS" name="local" translator-name="mongodb"/>
		<metadata type="DDL"><![CDATA[
			CREATE FOREIGN TABLE product (
				itemId integer,
				name varchar(50),
				description varchar(1024),
				price bigdecimal    
			) OPTIONS(UPDATABLE 'TRUE');
		]]></metadata>
	</model>
</vdb>
- Add following resource adapter configuration without SecurityType parameter
                <resource-adapter id="mongodb">
                    <module slot="main" id="org.jboss.teiid.resource-adapter.mongodb"/>
                    <connection-definitions>
                        <connection-definition class-name="org.teiid.resource.adapter.mongodb.MongoDBManagedConnectionFactory" jndi-name="java:jboss/datasources/MongoDS" use-java-context="true" pool-name="cfName">
                            <config-property name="Database">
                                catalogdb
                            </config-property>
                            <config-property name="Username">
                                catalogAdmin
                            </config-property>
                            <config-property name="RemoteServerList">
                                localhost:27017
                            </config-property>
                            <config-property name="Password">
                                catalogPW
                            </config-property>
                            <config-property name="SecurityType">
                               SCRAM_SHA_1
                            </config-property>
                            <validation>
                                <background-validation>true</background-validation>
                                <background-validation-millis>60</background-validation-millis>
                            </validation>
                        </connection-definition>
                    </connection-definitions>
                </resource-adapter>
-  run mongo product.js // see attachment



--
This message was sent by Atlassian JIRA
(v7.2.3#72005)


More information about the teiid-issues mailing list