Uploaded image for project: 'Teiid'
  1. Teiid
  2. TEIID-5433

Cassandra resource adapter broken due to incompatible Guava version

    XMLWordPrintable

Details

    Description

      We are using Cassandra driver 3.1.3, which normally has a dependency on Guava 16 (see https://github.com/datastax/java-driver/blob/3.1.3/pom.xml#L53), but in the Teiid distribution, there is Guava 20, which doesn't seem very backward compatible - the Cassandra driver doesn't work because it is missing a Guava class:

      [mppr] 05:51:34,702 WARN  [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (Worker1_QueryProcessorQueue797) JTxNEwL2Xd29 IJ000604: Throwable while attempting to get a new connection: null: java.lang.NoClassDefFoundError: com/google/common/util/concurrent/FutureFallback
      [mppr] 	at org.teiid.resource.adapter.cassandra.CassandraConnectionImpl.<init>(CassandraConnectionImpl.java:51)
      [mppr] 	at org.teiid.resource.adapter.cassandra.CassandraManagedConnectionFactory$1.getConnection(CassandraManagedConnectionFactory.java:44)
      [mppr] 	at org.teiid.resource.adapter.cassandra.CassandraManagedConnectionFactory$1.getConnection(CassandraManagedConnectionFactory.java:41)
      [mppr] 	at org.teiid.resource.spi.BasicManagedConnectionFactory.createManagedConnection(BasicManagedConnectionFactory.java:67)
      [mppr] 	at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.createConnectionEventListener(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:1327)
      [mppr] 	at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.getConnection(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:499)
      [mppr] 	at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getSimpleConnection(AbstractPool.java:632)
      [mppr] 	at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:604)
      [mppr] 	at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:624)
      [mppr] 	at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:597)
      [mppr] 	at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:789)
      [mppr] 	at org.teiid.resource.spi.WrappedConnectionFactory.getConnection(WrappedConnectionFactory.java:54)
      [mppr] 	at org.teiid.translator.ExecutionFactory.getConnection(ExecutionFactory.java:180)
      [mppr] 	at org.teiid.translator.ExecutionFactory.getConnection(ExecutionFactory.java:201)
      [mppr] 	at org.teiid.dqp.internal.datamgr.ConnectorManager.buildCapabilities(ConnectorManager.java:177)
      [mppr] 	at org.teiid.dqp.internal.datamgr.ConnectorManager.getCapabilities(ConnectorManager.java:161)
      [mppr] 	at org.teiid.dqp.internal.process.CachedFinder.findCapabilities(CachedFinder.java:104)
      [mppr] 	at org.teiid.query.metadata.TempCapabilitiesFinder.findCapabilities(TempCapabilitiesFinder.java:77)
      [mppr] 	at org.teiid.query.optimizer.relational.rules.CapabilitiesUtil.getCapabilities(CapabilitiesUtil.java:449)
      [mppr] 	at org.teiid.query.optimizer.relational.rules.CapabilitiesUtil.supports(CapabilitiesUtil.java:469)
      [mppr] 	at org.teiid.query.optimizer.relational.rules.CapabilitiesUtil.requiresCriteria(CapabilitiesUtil.java:454)
      [mppr] 	at org.teiid.query.optimizer.relational.rules.RulePlaceAccess.addAccessNode(RulePlaceAccess.java:197)
      [mppr] 	at org.teiid.query.optimizer.relational.rules.RulePlaceAccess.execute(RulePlaceAccess.java:82)
      [mppr] 	at org.teiid.query.optimizer.relational.RelationalPlanner.executeRules(RelationalPlanner.java:1025)
      [mppr] 	at org.teiid.query.optimizer.relational.RelationalPlanner.optimize(RelationalPlanner.java:228)
      [mppr] 	at org.teiid.query.optimizer.QueryOptimizer.optimizePlan(QueryOptimizer.java:179)
      [mppr] 	at org.teiid.dqp.internal.process.Request.generatePlan(Request.java:458)
      [mppr] 	at org.teiid.dqp.internal.process.Request.processRequest(Request.java:486)
      [mppr] 	at org.teiid.dqp.internal.process.RequestWorkItem.processNew(RequestWorkItem.java:660)
      [mppr] 	at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:339)
      [mppr] 	at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:47)
      [mppr] 	at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:276)
      [mppr] 	at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:277)
      [mppr] 	at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:115)
      [mppr] 	at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:206)
      [mppr] 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      [mppr] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      [mppr] 	at java.lang.Thread.run(Thread.java:748)
      [mppr] Caused by: java.lang.ClassNotFoundException: com.google.common.util.concurrent.FutureFallback from [Module "com.datastax.cassandra.driver.core" from local module loader @3834d63f (finder: local module finder @1ae369b7 (roots: /home/jmartisk/Workspace/jbossqe-whipper-tests/whipper-tests/../server-working-directory/modules,/home/jmartisk/Workspace/jbossqe-whipper-tests/whipper-tests/../server-working-directory/modules/system/layers/dv,/home/jmartisk/Workspace/jbossqe-whipper-tests/whipper-tests/../server-working-directory/modules/system/layers/base))]
      [mppr] 	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:198)
      [mppr] 	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:412)
      [mppr] 	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:400)
      [mppr] 	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
      [mppr] 	... 38 more
      

      Perhaps we should include Guava 16 in a module as well and adjust the dependencies?

      Attachments

        Issue Links

          Activity

            People

              rhn-engineering-shawkins Steven Hawkins
              jmartisk@redhat.com Jan Martiska
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: