[teiid-issues] [JBoss JIRA] (TEIID-5658) PG transport can sendResults before sync

Steven Hawkins (Jira) issues at jboss.org
Wed Feb 13 16:20:00 EST 2019


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

Steven Hawkins commented on TEIID-5658:
---------------------------------------

These errors do not occur if I switch out the teiid backend for an actual pg instance.

It's also not related to the ObjectChannelImpl - synchronizing to guard against it's use by the nio and engine threads does not help.  I've even reproduced this error when just the NIO thread is used, so that can't be it either.

I'll switch to the network level, rather than our message level.

> PG transport can sendResults before sync
> ----------------------------------------
>
>                 Key: TEIID-5658
>                 URL: https://issues.jboss.org/browse/TEIID-5658
>             Project: Teiid
>          Issue Type: Bug
>          Components: ODBC
>            Reporter: Steven Hawkins
>            Assignee: Steven Hawkins
>            Priority: Major
>             Fix For: 12.1, 12.0.1, 11.2.3
>
>
> The code is allowing for a sequence of events such as:
> 2019-02-13 14:07:47.613 org.teiid.ODBC TRACE NIO4 invoking server method: prepare [, select oid from pg_class where relname='pg_class', []]
> 2019-02-13 14:07:47.615 org.teiid.ODBC TRACE NIO4 invoking client method: org.teiid.transport.ODBCClientInstance$1 at d875495 prepareCompleted []
> 2019-02-13 14:07:47.615 org.teiid.ODBC TRACE NIO4 invoking server method: bindParameters [, , [], 0, null, UTF-8]
> 2019-02-13 14:07:47.615 org.teiid.ODBC TRACE NIO4 invoking client method: org.teiid.transport.ODBCClientInstance$1 at d875495 bindComplete null
> 2019-02-13 14:07:47.617 org.teiid.ODBC TRACE NIO4 invoking server method: getResultSetMetaDataDescription []
> 2019-02-13 14:07:47.617 org.teiid.ODBC TRACE NIO4 invoking client method: org.teiid.transport.ODBCClientInstance$1 at d875495 sendResultSetDescription [[org.teiid.odbc.PGUtil$PgColInfo at 1086babd], null]
> 2019-02-13 14:07:47.617 org.teiid.ODBC TRACE NIO4 invoking server method: execute [, 0]
> 2019-02-13 14:07:47.618 org.teiid.ODBC TRACE NIO4 invoking client method: org.teiid.transport.ODBCClientInstance$1 at d875495 sendResults [null, org.teiid.jdbc.ResultSetImpl at 1e1aed1a, [org.teiid.odbc.PGUtil$PgColInfo at 1086babd], org.teiid.client.util.ResultsFuture at 3b6cff36, FORWARD, -1, false, null]
> 2019-02-13 14:07:47.619 org.teiid.ODBC TRACE NIO4 invoking server method: sync null
> 2019-02-13 14:07:47.619 org.teiid.ODBC TRACE Worker0_QueryProcessorQueue368 invoking client method: org.teiid.transport.ODBCClientInstance$1 at d875495 sendCommandComplete [select oid from pg_class where relname='pg_class', [1]]
> 2019-02-13 14:07:47.619 org.teiid.ODBC TRACE NIO4 invoking client method: org.teiid.transport.ODBCClientInstance$1 at d875495 ready [false, false]
> That is after execute we are immediately responding with results.  That response ahead of the sync causes issues in the pg jdbc driver such as reporting that there is no result set.  See TEIID-5425
> This does not appear to be a requirement of the flow: https://www.postgresql.org/docs/9.3/protocol-flow.html#AEN99807



--
This message was sent by Atlassian Jira
(v7.12.1#712002)


More information about the teiid-issues mailing list