Hi,
 I was trying to connect to hive through camel using jdbc and got
IllegalMonitorStateException. In exchange i was able to see the data fetched
from hive table but error was thrown when JDBCProducer tried to close the
result set.

*Logs:*
Message History
---------------------------------------------------------------------------------------------------------------------------------------
RouteId              ProcessorId          Processor                             
                                          
Elapsed (ms)
[uaasRoute         ] [uaasRoute         ] [direct://hivein                      
                                        
] [      3690]
[uaasRoute         ] [setBody1          ] [setBody[constant{select * from
uaas_cl_poc.proactive_gcplimit}]               ] [         0]
[uaasRoute         ] [to1               ]
[jdbc:hive-ds?resetAutoCommit=false                                           
] [      3690]

Exchange
---------------------------------------------------------------------------------------------------------------------------------------
Exchange[
       Id                  ID-PHX2MYMV32-54123-1459807338148-0-2
       ExchangePattern     InOut
       Headers            
{breadcrumbId=ID-PHX2MYMV32-54123-1459807338148-0-1, CamelRedelivered=false,
CamelRedeliveryCounter=0}
       BodyType            String
       Body                select * from uaas_cl_poc.proactive_gcplimit
]

Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
java.lang.IllegalMonitorStateException
       at java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(Unknown
Source)
       at
java.util.concurrent.locks.AbstractQueuedSynchronizer.release(Unknown
Source)
       at java.util.concurrent.locks.ReentrantLock.unlock(Unknown Source)
       at
org.apache.hive.jdbc.HiveStatement.closeClientOperation(HiveStatement.java:177)
       at
org.apache.hive.jdbc.HiveQueryResultSet.close(HiveQueryResultSet.java:293)
       at
org.apache.camel.component.jdbc.JdbcProducer.closeQuietly(JdbcProducer.java:246)
       at
org.apache.camel.component.jdbc.JdbcProducer.doCreateAndExecuteSqlStatement(JdbcProducer.java:236)
       at
org.apache.camel.component.jdbc.JdbcProducer.createAndExecuteSqlStatement(JdbcProducer.java:123)
       at
org.apache.camel.component.jdbc.JdbcProducer.processingSqlWithoutSettingAutoCommit(JdbcProducer.java:111)
       at
org.apache.camel.component.jdbc.JdbcProducer.process(JdbcProducer.java:67)


Log showing data fetched from table:
Exception in thread "main" org.apache.camel.CamelExecutionException:
Exception occurred during execution on the exchange:
Exchange[ID-PHX2MYMV32-54123-1459807338148-0-2][Message:
[{proactive_gcplimit.spend=100.0, proactive_gcplimit.pd=10.0,
proactive_gcplimit.ead=10.0, proactive_gcplimit.lgd=12345.0,
proactive_gcplimit.obligorid=23456, proactive_gcplimit.caseid=null,
proactive_gcplimit.timestamp=null, proactive_gcplimit.source=0.09,
proactive_gcplimit.sic=corp, proactive_gcplimit.final_rating=null,
proactive_gcplimit.cid_level=null, proactive_gcplimit.mkt_code=null},
{proactive_gcplimit.spend=90.0, proactive_gcplimit.pd=9.0,
proactive_gcplimit.ead=9.0, proactive_gcplimit.lgd=12346.0,
proactive_gcplimit.obligorid=23457, proactive_gcplimit.caseid=null,
proactive_gcplimit.timestamp=null, proactive_gcplimit.source=0.01,
proactive_gcplimit.sic=obl, proactive_gcplimit.final_rating=null,
proactive_gcplimit.cid_level=null, proactive_gcplimit.mkt_code=null}]]
       at
org.apache.camel.util.ObjectHelper.wrapCamelExecutionException(ObjectHelper.java:1658)
       at
org.apache.camel.util.ExchangeHelper.extractResultBody(ExchangeHelper.java:646)
       at
org.apache.camel.impl.DefaultProducerTemplate.extractResultBody(DefaultProducerTemplate.java:471)
       at
org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:133)
       at
org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:149)
       at
org.apache.camel.impl.DefaultProducerTemplate.requestBody(DefaultProducerTemplate.java:301)
       at
aexp.uaas.camel.standalone.StandaloneTest.main(StandaloneTest.java:23)
Caused by: java.lang.IllegalMonitorStateException
       at java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(Unknown
Source)


----------------------------------------------------------------------------------------------------------------

*Camel Route:*
<route id="uaasRoute">
<from uri="direct:hivein"/>
<setBody>
<constant>select * from uaas_cl_poc.proactive_gcplimit</constant>
</setBody>
<to uri="jdbc:hive-ds?resetAutoCommit=false"/>
<to uri="mock:result"/>
</route>

*Hive Datasource Bean*

<bean id="hive-driver" class="org.apache.hadoop.hive.jdbc.HiveDriver" />

<bean id="hive-ds"
        class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="driverClass" value="org.apache.hive.jdbc.HiveDriver" />
<property name="url"
        value="jdbc:hive2://url" />
<property name="username" value="uname" />
<property name="password" value="pwd" />
</bean>

*Java Code:*
CamelContext camel = SpringCamelContext.springCamelContext(appContext); 
ProducerTemplate template = camel.createProducerTemplate();
camel.start();
Object out = template.requestBody("direct:hivein","Test");
System.out.println(out);
camel.stop();

Please assist.
Thanks,
Vinoth.



--
View this message in context: 
http://camel.465427.n5.nabble.com/Camel-Hive-Issue-tp5780522.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to