Details

  • Type: Bug Bug
  • Status: Open Open
  • Priority: Major Major
  • Resolution: Unresolved
  • Affects Version/s: 3.1.2
  • Fix Version/s: None
  • Component/s: Core: API
  • Labels:
    None
  • Environment:

    Mule Standalone server community - Mac OS X, JDK 1.6 64-bit, executing a test class extending org.mule.tck.FunctionalTest

  • User impact:
    Low
  • Configuration:
    Hide

    <jdbc:endpoint name="itemQueryEndpoint" queryKey="selectRows" exchange-pattern="request-response" transformer-refs="XMLContentTransformer" responseTransformer-refs="itemOutput"/>

    <jdbc:connector name="jdbcConnector" dataSource-ref="jdbcDataSource">

    <jdbc:query key="selectRows" value="select * from jeves.item where item_id=cast(#[map-payload:item_id] as int)"/>
    </jdbc:connector>

    <spring:bean id="jdbcDataSource" class="org.postgresql.ds.PGPoolingDataSource">
    <spring:property name="databaseName" value="eve"/>
    <spring:property name="serverName" value="localhost"/>
    <spring:property name="portNumber" value="5432"/>
    <spring:property name="user" value="eve"/>
    <spring:property name="password" value="eve"/>
    </spring:bean>

    Show
    <jdbc:endpoint name="itemQueryEndpoint" queryKey="selectRows" exchange-pattern="request-response" transformer-refs="XMLContentTransformer" responseTransformer-refs="itemOutput"/> <jdbc:connector name="jdbcConnector" dataSource-ref="jdbcDataSource"> <jdbc:query key="selectRows" value="select * from jeves.item where item_id=cast(#[map-payload:item_id] as int)"/> </jdbc:connector> <spring:bean id="jdbcDataSource" class="org.postgresql.ds.PGPoolingDataSource"> <spring:property name="databaseName" value="eve"/> <spring:property name="serverName" value="localhost"/> <spring:property name="portNumber" value="5432"/> <spring:property name="user" value="eve"/> <spring:property name="password" value="eve"/> </spring:bean>
  • Log Output:
    Hide

    org.mule.api.transport.DispatchException: Failed to route event via endpoint: DefaultOutboundEndpoint{endpointUri=jdbc://selectRows, connector=JdbcConnector
    {
      name=jdbcConnector
      lifecycle=start
      this=1e34f445
      numberOfConcurrentTransactedReceivers=4
      createMultipleTransactedReceivers=false
      connected=true
      supportedProtocols=[jdbc]
      serviceOverrides=<none>
    }
    , name='itemQueryEndpoint', mep=REQUEST_RESPONSE, properties={queryTimeout=-1}, transactionConfig=Transaction{factory=null, action=NEVER, timeout=0}, deleteUnacceptedMessages=false, initialState=started, responseTimeout=10000, endpointEncoding=UTF-8, disableTransportTransformer=false}. Message payload is of type: HashMap
    at org.mule.transport.AbstractMessageDispatcher.process(AbstractMessageDispatcher.java:102)
    at org.mule.transport.AbstractConnector$DispatcherMessageProcessor.process(AbstractConnector.java:2452)
    at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:62)
    at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:90)
    at org.mule.processor.AbstractInterceptingMessageProcessor.processNext(AbstractInterceptingMessageProcessor.java:75)
    at org.mule.endpoint.outbound.OutboundResponsePropertiesMessageProcessor.process(OutboundResponsePropertiesMessageProcessor.java:39)
    at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:62)
    at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:90)
    at org.mule.processor.TransactionalInterceptingMessageProcessor$1.doInTransaction(TransactionalInterceptingMessageProcessor.java:49)
    at org.mule.processor.TransactionalInterceptingMessageProcessor$1.doInTransaction(TransactionalInterceptingMessageProcessor.java:46)
    at org.mule.transaction.TransactionTemplate.execute(TransactionTemplate.java:110)
    at org.mule.processor.TransactionalInterceptingMessageProcessor.process(TransactionalInterceptingMessageProcessor.java:55)
    at org.mule.processor.AbstractInterceptingMessageProcessor.processNext(AbstractInterceptingMessageProcessor.java:75)
    at org.mule.processor.AbstractFilteringMessageProcessor.process(AbstractFilteringMessageProcessor.java:41)
    at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:62)
    at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:90)
    at org.mule.processor.chain.InterceptingChainLifecycleWrapper.doProcess(InterceptingChainLifecycleWrapper.java:60)
    at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:90)
    at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:62)
    at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:90)
    at org.mule.processor.chain.InterceptingChainLifecycleWrapper.doProcess(InterceptingChainLifecycleWrapper.java:60)
    at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:90)
    at org.mule.endpoint.DefaultOutboundEndpoint.process(DefaultOutboundEndpoint.java:89)
    at org.mule.client.DefaultLocalMuleClient.send(DefaultLocalMuleClient.java:91)
    at org.mule.client.DefaultLocalMuleClient.send(DefaultLocalMuleClient.java:85)
    at com.plexq.jeves.databaseapi.query.JDBCItemsTest.testSingleLoanRequest(JDBCItemsTest.java:41)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at org.mule.tck.AbstractMuleTestCase.runBare(AbstractMuleTestCase.java:305)
    at org.mule.tck.AbstractMuleTestCase.run(AbstractMuleTestCase.java:284)
    at com.intellij.junit3.JUnit3IdeaTestRunner.doRun(JUnit3IdeaTestRunner.java:139)
    at com.intellij.junit3.JUnit3IdeaTestRunner.startRunnerWithArgs(JUnit3IdeaTestRunner.java:52)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:199)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:62)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
    Caused by: java.sql.SQLException: ERROR: syntax error at or near "selectRows" Query: selectRows Parameters: []
    at org.apache.commons.dbutils.QueryRunner.rethrow(QueryRunner.java:540)
    at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:397)
    at org.mule.transport.jdbc.sqlstrategy.SelectSqlStatementStrategy.executeStatement(SelectSqlStatementStrategy.java:85)
    at org.mule.transport.jdbc.JdbcMessageDispatcher.doSend(JdbcMessageDispatcher.java:68)
    at org.mule.transport.AbstractMessageDispatcher.process(AbstractMessageDispatcher.java:80)
    ... 50 more
    Show
    org.mule.api.transport.DispatchException: Failed to route event via endpoint: DefaultOutboundEndpoint{endpointUri=jdbc://selectRows, connector=JdbcConnector {   name=jdbcConnector   lifecycle=start   this=1e34f445   numberOfConcurrentTransactedReceivers=4   createMultipleTransactedReceivers=false   connected=true   supportedProtocols=[jdbc]   serviceOverrides=<none> } , name='itemQueryEndpoint', mep=REQUEST_RESPONSE, properties={queryTimeout=-1}, transactionConfig=Transaction{factory=null, action=NEVER, timeout=0}, deleteUnacceptedMessages=false, initialState=started, responseTimeout=10000, endpointEncoding=UTF-8, disableTransportTransformer=false}. Message payload is of type: HashMap at org.mule.transport.AbstractMessageDispatcher.process(AbstractMessageDispatcher.java:102) at org.mule.transport.AbstractConnector$DispatcherMessageProcessor.process(AbstractConnector.java:2452) at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:62) at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:90) at org.mule.processor.AbstractInterceptingMessageProcessor.processNext(AbstractInterceptingMessageProcessor.java:75) at org.mule.endpoint.outbound.OutboundResponsePropertiesMessageProcessor.process(OutboundResponsePropertiesMessageProcessor.java:39) at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:62) at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:90) at org.mule.processor.TransactionalInterceptingMessageProcessor$1.doInTransaction(TransactionalInterceptingMessageProcessor.java:49) at org.mule.processor.TransactionalInterceptingMessageProcessor$1.doInTransaction(TransactionalInterceptingMessageProcessor.java:46) at org.mule.transaction.TransactionTemplate.execute(TransactionTemplate.java:110) at org.mule.processor.TransactionalInterceptingMessageProcessor.process(TransactionalInterceptingMessageProcessor.java:55) at org.mule.processor.AbstractInterceptingMessageProcessor.processNext(AbstractInterceptingMessageProcessor.java:75) at org.mule.processor.AbstractFilteringMessageProcessor.process(AbstractFilteringMessageProcessor.java:41) at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:62) at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:90) at org.mule.processor.chain.InterceptingChainLifecycleWrapper.doProcess(InterceptingChainLifecycleWrapper.java:60) at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:90) at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:62) at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:90) at org.mule.processor.chain.InterceptingChainLifecycleWrapper.doProcess(InterceptingChainLifecycleWrapper.java:60) at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:90) at org.mule.endpoint.DefaultOutboundEndpoint.process(DefaultOutboundEndpoint.java:89) at org.mule.client.DefaultLocalMuleClient.send(DefaultLocalMuleClient.java:91) at org.mule.client.DefaultLocalMuleClient.send(DefaultLocalMuleClient.java:85) at com.plexq.jeves.databaseapi.query.JDBCItemsTest.testSingleLoanRequest(JDBCItemsTest.java:41) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at org.mule.tck.AbstractMuleTestCase.runBare(AbstractMuleTestCase.java:305) at org.mule.tck.AbstractMuleTestCase.run(AbstractMuleTestCase.java:284) at com.intellij.junit3.JUnit3IdeaTestRunner.doRun(JUnit3IdeaTestRunner.java:139) at com.intellij.junit3.JUnit3IdeaTestRunner.startRunnerWithArgs(JUnit3IdeaTestRunner.java:52) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:199) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:62) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) Caused by: java.sql.SQLException: ERROR: syntax error at or near "selectRows" Query: selectRows Parameters: [] at org.apache.commons.dbutils.QueryRunner.rethrow(QueryRunner.java:540) at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:397) at org.mule.transport.jdbc.sqlstrategy.SelectSqlStatementStrategy.executeStatement(SelectSqlStatementStrategy.java:85) at org.mule.transport.jdbc.JdbcMessageDispatcher.doSend(JdbcMessageDispatcher.java:68) at org.mule.transport.AbstractMessageDispatcher.process(AbstractMessageDispatcher.java:80) ... 50 more
  • Similar Issues:
    None

Description

There is an interesting bug that if you create an endpoint with the queryKey property, and the queryKey property starts with "select", say "selectRows". The resolution process gets confused because it believes the property is actually a query string instead of a reference to a query element in the connector.

Activity

There are no comments yet on this issue.

People

Vote (0)
Watch (0)

Dates

  • Created:
    Updated: