]
Steven Hawkins resolved TEIID-4477.
-----------------------------------
Fix Version/s: 9.1
9.0.5
Resolution: Done
Updated the isAlive method so that the pool can properly remove stale connections when the
validate-on-match or background-validation is configured. Also allowed the context
factory to be set and added null checks to prevent the npe on close when execute fails.
LDAP connector disconnects intermittently with error
"TEIID12002"
-----------------------------------------------------------------
Key: TEIID-4477
URL:
https://issues.jboss.org/browse/TEIID-4477
Project: Teiid
Issue Type: Bug
Components: LDAP Connector
Affects Versions: 8.12.5
Environment: Red Hat JBoss Data Virtualization - Version 6.3.0
Reporter: Rafael Coutinho
Assignee: Steven Hawkins
Fix For: 9.1, 9.0.5
We are using LDAP connector for virtualizing the ldap employee directory data. For some
reason every 3 to 4 hours we get a connection error between JDV and LDAP.
The exception says it could not find the context name, but after restarting it it works
again.
Here is the exception:
11:21:12,868 WARN [org.teiid.CONNECTOR] (Worker62_QueryProcessorQueue108177) Connector
worker process failed for atomic-request=6S71mw5pkfvo.106.3.19906:
org.teiid.translator.TranslatorException: TEIID12002 Failed to create LDAP search context
from the specified context name ou=users,dc=redhat,dc=com. Check the table/group name in
source to ensure the context exists.
at
org.teiid.translator.ldap.LDAPSyncQueryExecution.createSearchContext(LDAPSyncQueryExecution.java:148)
[translator-ldap-8.12.5.redhat-8.jar:8.12.5.redhat-8]
at
org.teiid.translator.ldap.LDAPSyncQueryExecution.execute(LDAPSyncQueryExecution.java:130)
[translator-ldap-8.12.5.redhat-8.jar:8.12.5.redhat-8]
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:364)
at sun.reflect.GeneratedMethodAccessor184.invoke(Unknown Source) [:1.8.0-internal]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
[rt.jar:1.8.0-internal]
at java.lang.reflect.Method.invoke(Method.java:508) [rt.jar:2.6 (07-19-2016)]
at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
at com.sun.proxy.$Proxy80.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:277) [rt.jar:1.8.0-internal]
at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:65)
at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:276)
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:1153)
[rt.jar:1.8.0-internal]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[rt.jar:1.8.0-internal]
at java.lang.Thread.run(Thread.java:785) [vm.jar:1.8.0-internal]
Caused by: javax.naming.CommunicationException: connection closed [Root exception is
java.io.IOException: connection closed]; remaining name
'ou=users,dc=redhat,dc=com'
at com.sun.jndi.ldap.LdapCtx.doSearch(LdapCtx.java:2014) [rt.jar:1.8.0-internal]
at com.sun.jndi.ldap.LdapCtx.doSearchOnce(LdapCtx.java:1945) [rt.jar:1.8.0-internal]
at com.sun.jndi.ldap.LdapCtx.c_lookup(LdapCtx.java:1039) [rt.jar:1.8.0-internal]
at com.sun.jndi.toolkit.ctx.ComponentContext.p_lookup(ComponentContext.java:554)
[rt.jar:1.8.0-internal]
at
com.sun.jndi.toolkit.ctx.PartialCompositeContext.lookup(PartialCompositeContext.java:189)
[rt.jar:1.8.0-internal]
at
com.sun.jndi.toolkit.ctx.PartialCompositeContext.lookup(PartialCompositeContext.java:178)
[rt.jar:1.8.0-internal]
at javax.naming.InitialContext.lookup(InitialContext.java:428) [rt.jar:1.8.0-internal]
at javax.naming.InitialContext.lookup(InitialContext.java:428) [rt.jar:1.8.0-internal]
at
org.teiid.resource.adapter.ldap.LDAPConnectionImpl.lookup(LDAPConnectionImpl.java:193)
at
org.teiid.translator.ldap.LDAPSyncQueryExecution.createSearchContext(LDAPSyncQueryExecution.java:146)
[translator-ldap-8.12.5.redhat-8.jar:8.12.5.redhat-8]
... 18 more
Caused by: java.io.IOException: connection closed
at com.sun.jndi.ldap.LdapClient.ensureOpen(LdapClient.java:1604)
[rt.jar:1.8.0-internal]
at com.sun.jndi.ldap.LdapClient.search(LdapClient.java:542) [rt.jar:1.8.0-internal]
at com.sun.jndi.ldap.LdapCtx.doSearch(LdapCtx.java:1997) [rt.jar:1.8.0-internal]
... 27 more
11:21:12,871 ERROR [org.teiid.CONNECTOR] (Worker63_QueryProcessorQueue108178) null:
java.lang.NullPointerException
at
org.teiid.translator.ldap.LDAPSyncQueryExecution.close(LDAPSyncQueryExecution.java:186)
[translator-ldap-8.12.5.redhat-8.jar:8.12.5.redhat-8]
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.close(ConnectorWorkItem.java:255)
at sun.reflect.GeneratedMethodAccessor185.invoke(Unknown Source) [:1.8.0-internal]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
[rt.jar:1.8.0-internal]
at java.lang.reflect.Method.invoke(Method.java:508) [rt.jar:2.6 (07-19-2016)]
at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
at com.sun.proxy.$Proxy80.close(Unknown Source)
at
org.teiid.dqp.internal.process.DataTierTupleSource.fullyCloseSource(DataTierTupleSource.java:338)
at
org.teiid.dqp.internal.process.DataTierTupleSource.exceptionOccurred(DataTierTupleSource.java:394)
at
org.teiid.dqp.internal.process.DataTierTupleSource.nextTuple(DataTierTupleSource.java:161)
at org.teiid.query.processor.relational.AccessNode.nextBatchDirect(AccessNode.java:391)
at
org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:282)
at org.teiid.query.processor.relational.SelectNode.nextBatchDirect(SelectNode.java:104)
at
org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:282)
at
org.teiid.query.processor.relational.ProjectNode.nextBatchDirect(ProjectNode.java:150)
at
org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:282)
at
org.teiid.query.processor.relational.DupRemoveNode.nextBatchDirect(DupRemoveNode.java:62)
at
org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:282)
at
org.teiid.query.processor.relational.RelationalPlan.nextBatch(RelationalPlan.java:145)
at org.teiid.query.processor.QueryProcessor.nextBatchDirect(QueryProcessor.java:151)
at org.teiid.query.processor.QueryProcessor.nextBatch(QueryProcessor.java:114)
at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:164)
at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:146)
at org.teiid.dqp.internal.process.RequestWorkItem.processMore(RequestWorkItem.java:472)
at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:348)
at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:51)
at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:274)
at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:276)
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:1153)
[rt.jar:1.8.0-internal]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[rt.jar:1.8.0-internal]
at java.lang.Thread.run(Thread.java:785) [vm.jar:1.8.0-internal]
11:21:12,874 DEBUG [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool]
(Worker63_QueryProcessorQueue108178) LDAPSource: returnConnection(6306ef86, false) [1/20]
11:21:12,874 WARN [org.teiid.PROCESSOR] (Worker63_QueryProcessorQueue108178) TEIID30020
Processing exception for request 6S71mw5pkfvo.106 'TEIID30504 local: TEIID12002 Failed
to create LDAP search context from the specified context name ou=users,dc=redhat,dc=com.
Check the table/group name in source to ensure the context exists.'. Originally
TeiidProcessingException 'connection closed' LdapClient.java:1604. Enable more
detailed logging to see the entire stacktrace.
11:21:16,120 DEBUG [org.apache.catalina.session]
(ContainerBackgroundProcessor[StandardEngine[jboss.web]]) Start expire sessions
StandardManager at 1474903276120 sessioncount 0