[teiid-issues] [JBoss JIRA] (TEIID-3921) Accumulo translator doesn't end query execution when there are no tablet servers

Jan Stastny (JIRA) issues at jboss.org
Tue Jan 26 05:18:00 EST 2016


    [ https://issues.jboss.org/browse/TEIID-3921?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13153546#comment-13153546 ] 

Jan Stastny commented on TEIID-3921:
------------------------------------

When I set a timeout for the query in my vdb, there's a problem when DV is turned off, before Accumulo instance comes alive. (Note that this happen, even though the query was cancelled by the timeout).

When there is no tablet server and I have timeout set, this appears in the console:
{code:plain}
11:13:56,733 WARN  [org.apache.accumulo.core.client.impl.ServerClient] (Worker1_QueryProcessorQueue1) There are no tablet servers: check that zookeeper and accumulo are running.
11:14:01,616 INFO  [org.teiid.PROCESSOR] (Server Side Timeout1) TEIID31096 Canceling query Si5TJdVBy6QQ.0 since it has exceeded the timeout of 5,000 milliseconds.
{code}

But when turning Teiid off, this appears:
{code:plain}
11:14:28,210 ERROR [org.apache.accumulo.core.util.UtilWaitThread] (Worker1_QueryProcessorQueue1) sleep interrupted: java.lang.InterruptedException: sleep interrupted
	at java.lang.Thread.sleep(Native Method) [rt.jar:1.7.0_79]
	at org.apache.accumulo.core.util.UtilWaitThread.sleep(UtilWaitThread.java:26) [accumulo-core-1.5.0.jar:1.5.0]
	at org.apache.accumulo.core.client.impl.ServerClient.executeRaw(ServerClient.java:112) [accumulo-core-1.5.0.jar:1.5.0]
	at org.apache.accumulo.core.client.impl.ServerClient.execute(ServerClient.java:71) [accumulo-core-1.5.0.jar:1.5.0]
	at org.apache.accumulo.core.client.impl.ConnectorImpl.<init>(ConnectorImpl.java:64) [accumulo-core-1.5.0.jar:1.5.0]
	at org.apache.accumulo.core.client.ZooKeeperInstance.getConnector(ZooKeeperInstance.java:227) [accumulo-core-1.5.0.jar:1.5.0]
	at org.apache.accumulo.core.client.ZooKeeperInstance.getConnector(ZooKeeperInstance.java:222) [accumulo-core-1.5.0.jar:1.5.0]
	at org.teiid.resource.adapter.accumulo.AccumuloConnectionImpl.<init>(AccumuloConnectionImpl.java:64)
	at org.teiid.resource.adapter.accumulo.AccumuloManagedConnectionFactory$AccumuloConnectionFactory.getConnection(AccumuloManagedConnectionFactory.java:60)
	at org.teiid.resource.adapter.accumulo.AccumuloManagedConnectionFactory$AccumuloConnectionFactory.getConnection(AccumuloManagedConnectionFactory.java:49)
	at org.teiid.resource.spi.BasicManagedConnectionFactory.createManagedConnection(BasicManagedConnectionFactory.java:71) [teiid-api-8.12.3.redhat-1.jar:8.12.3.redhat-1]
	at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.createConnectionEventListener(SemaphoreArrayListManagedConnectionPool.java:873)
	at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.getConnection(SemaphoreArrayListManagedConnectionPool.java:418)
	at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getSimpleConnection(AbstractPool.java:470)
	at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:442)
	at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:354)
	at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:327)
	at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:510)
	at org.teiid.resource.spi.WrappedConnectionFactory.getConnection(WrappedConnectionFactory.java:58) [teiid-api-8.12.3.redhat-1.jar:8.12.3.redhat-1]
	at org.teiid.translator.ExecutionFactory.getConnection(ExecutionFactory.java:173) [teiid-api-8.12.3.redhat-1.jar:8.12.3.redhat-1]
	at org.teiid.translator.ExecutionFactory.getConnection(ExecutionFactory.java:194) [teiid-api-8.12.3.redhat-1.jar:8.12.3.redhat-1]
	at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:313) [teiid-engine-8.12.3.redhat-1.jar:8.12.3.redhat-1]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_79]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_79]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_79]
	at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_79]
	at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211) [teiid-engine-8.12.3.redhat-1.jar:8.12.3.redhat-1]
	at com.sun.proxy.$Proxy93.execute(Unknown Source)
	at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:306) [teiid-engine-8.12.3.redhat-1.jar:8.12.3.redhat-1]
	at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:112) [teiid-engine-8.12.3.redhat-1.jar:8.12.3.redhat-1]
	at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:108) [teiid-engine-8.12.3.redhat-1.jar:8.12.3.redhat-1]
	at java.util.concurrent.FutureTask.run(FutureTask.java:262) [rt.jar:1.7.0_79]
	at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:65) [teiid-engine-8.12.3.redhat-1.jar:8.12.3.redhat-1]
	at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:276) [teiid-engine-8.12.3.redhat-1.jar:8.12.3.redhat-1]
	at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119) [teiid-engine-8.12.3.redhat-1.jar:8.12.3.redhat-1]
	at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210) [teiid-engine-8.12.3.redhat-1.jar:8.12.3.redhat-1]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_79]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_79]
	at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_79]
{code}

This indicates, that there is still a thread waiting for Accumulo to become available, even though the query was cancelled, thus there's no need to wait for it anymore.

> Accumulo translator doesn't end query execution when there are no tablet servers
> --------------------------------------------------------------------------------
>
>                 Key: TEIID-3921
>                 URL: https://issues.jboss.org/browse/TEIID-3921
>             Project: Teiid
>          Issue Type: Bug
>          Components: Misc. Connectors
>    Affects Versions: 8.12.3
>            Reporter: Jan Stastny
>            Assignee: Ramesh Reddy
>
> Teiid accumulo translator doesn't interrupt query execution when the accumulo instance is not running.
> There might be a situation that Zookeeper instance is running, but Accumulo is not.
> The translator, even though there is no tablet server entry in zookeeper, for given accumulo instance, executes the query. The query is running until query timeout exceeds. There is no indication of the fact, that accumulo tablet server is not present/responding except for
> {code}
> 09:25:46,539 WARN  [org.apache.accumulo.core.client.impl.ServerClient] (Worker3_QueryProcessorQueue21) There are no tablet servers: check that zookeeper and accumulo are running.
> {code}
> There might be even situation, that Accumulo stopped in unusual way and didn't alter the tablet server information in Zookeeper, this way, there is a tablet server entry present in Zookeeper, but the tablet server is in fact not running. So Teiid should check the tablet server's address which received from Zookeeper.
> Interesting to note is the fact, that the same problem can be examined in accumulo's shell:
> {code}
> $ bin/accumulo shell -u root
> Password: ******
> 2016-01-22 10:02:05,604 [impl.ServerClient] WARN : There are no tablet servers: check that zookeeper and accumulo are running.
> {code}
> and then the shell hangs. Teiid needs to overcome this limitation.



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the teiid-issues mailing list