Uploaded image for project: 'Kogito'
  1. Kogito
  2. KOGITO-8459

kogito-addons-quarkus-persistence-jdbc: invalid usage of sqlIncludingVersion

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • 1.34.0.Final
    • None
    • Core Engine
    • None

    Description

      Following the guide from kogito in a serverless workflow case, an exception was thrown as below.

      https://kiegroup.github.io/kogito-docs/serverlessworkflow/latest/persistence/persistence-with-postgresql.html

      2023-01-12 16:56:13,167 ERROR [org.kie.kog.add.qua.mes.com.AbstractQuarkusCloudEventReceiver] (kogito-event-executor-1) Error processing message {"specversion":"0.3","id":"0367994e-5c60-4129-9290-1f2daea0448b","source":"adc","type":"newDataProcessing","time":"2022-12-27T07:09:24.057146288Z","procid":"1023","data":{ "input": { "uploadId":"abc","userId":"def","jobId":"mno" }}}: java.util.concurrent.CompletionException: java.lang.RuntimeException: Error finding process instance dedf980b-e0d5-48e4-b09c-4559ef665b37
              at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
              at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
              at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1770)
              at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
              at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
              at java.base/java.lang.Thread.run(Thread.java:833)
      Caused by: java.lang.RuntimeException: Error finding process instance dedf980b-e0d5-48e4-b09c-4559ef665b37
              at org.kie.kogito.persistence.jdbc.Repository.uncheckedException(Repository.java:53)
              at org.kie.kogito.persistence.jdbc.GenericRepository.findByIdInternal(GenericRepository.java:172)
              at org.kie.kogito.persistence.jdbc.JDBCProcessInstances.findById(JDBCProcessInstances.java:107)
              at org.kie.kogito.process.ProcessInstances.findById(ProcessInstances.java:24)
              at org.kie.kogito.event.impl.ProcessEventDispatcher.handleMessageWithReference(ProcessEventDispatcher.java:113)
              at org.kie.kogito.event.impl.ProcessEventDispatcher.lambda$dispatch$0(ProcessEventDispatcher.java:72)
              at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
              ... 3 more
      Caused by: org.postgresql.util.PSQLException: ERROR: trailing junk after parameter at or near "$2a"
        Position: 79
              at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2676)
              at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2366)
              at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:356)
              at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:496)
              at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:413)
              at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:190)
              at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:134)
              at io.agroal.pool.wrapper.PreparedStatementWrapper.executeQuery(PreparedStatementWrapper.java:78)
              at org.kie.kogito.persistence.jdbc.GenericRepository.findByIdInternal(GenericRepository.java:161) 
      
      

      After debugging, an invalid usage of function sqlIncludingVersion was found.

       

        private static String sqlIncludingVersion(String statement, String processVersion) {
              return statement + (processVersion == null ? PROCESS_VERSION_IS_NULL : PROCESS_VERSION_EQUALS_TO);
          } 

      As the statement is something like 'SELECT payload, version FROM process_instances WHERE process_id = ? and id = ?' without a blank, the result of this function is 'SELECT payload, version FROM process_instances WHERE process_id = ? and id = ?and process_version = ?' and it is an invalid sql statement.

       
       
       

      Attachments

        Activity

          People

            cnicolai@redhat.com Cristiano Nicolai
            globefishng Marshall Ma (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: