[teiid-issues] [JBoss JIRA] (TEIID-5658) PG transport can deliver messages out of order

Steven Hawkins (Jira) issues at jboss.org
Thu Feb 14 10:10:00 EST 2019


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

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

> So you are saying two separate threads are writing to Channel.write(..) in a synchronization block but you still see them in out of order?

Not just two threads.  From the issue it matters that one of them is the nio event loop thread.  If it were just other threads apparently that would work as well.  What this probably means is that the engine threads performing the writes are really just queuing the write for the event loop thread - then the event loop thread when it is performing writes will prioritize it's own write ahead of anything that is queued.

However I've also seemingly reproduced this situation when all writes have been initiated by the nio thread - which seems quite odd.

> PG transport can deliver messages out of order
> ----------------------------------------------
>
>                 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
>
>
> Although it is not apparent in our logs, we are delivering response messages out of order.
> From our logs we have:
> 2019-02-14 08:18:12.476 org.teiid.ODBC TRACE NIO1 invoking server method: prepare [, select 3 from pg_class where relname='pg_class', []]
> 2019-02-14 08:18:12.476 org.teiid.ODBC TRACE NIO1 invoking client method: org.teiid.transport.ODBCClientInstance at 6064753f prepareCompleted []
> 2019-02-14 08:18:12.48 org.teiid.ODBC TRACE NIO1 invoking server method: bindParameters [, , [], 0, null, UTF-8]
> 2019-02-14 08:18:12.481 org.teiid.ODBC TRACE NIO1 invoking client method: org.teiid.transport.ODBCClientInstance at 6064753f bindComplete null
> 2019-02-14 08:18:12.481 org.teiid.ODBC TRACE NIO1 invoking server method: getResultSetMetaDataDescription []
> 2019-02-14 08:18:12.481 org.teiid.ODBC TRACE NIO1 invoking client method: org.teiid.transport.ODBCClientInstance at 6064753f sendResultSetDescription [[org.teiid.odbc.PGUtil$PgColInfo at 333d1d1b], null]
> 2019-02-14 08:18:12.481 org.teiid.ODBC TRACE NIO1 invoking server method: execute [, 0]
> 2019-02-14 08:18:12.484 org.teiid.ODBC TRACE NIO1 invoking client method: org.teiid.transport.ODBCClientInstance at 6064753f sendResults [null, org.teiid.jdbc.ResultSetImpl at 4516a1a2, [org.teiid.odbc.PGUtil$PgColInfo at 333d1d1b], org.teiid.client.util.ResultsFuture at 1e98b9de, FORWARD, -1, false, null]
> 2019-02-14 08:18:12.486 org.teiid.ODBC TRACE Worker2_QueryProcessorQueue211 invoking client method: org.teiid.transport.ODBCClientInstance at 6064753f sendCommandComplete [select 3 from pg_class where relname='pg_class', [1]]
> 2019-02-14 08:18:12.486 org.teiid.ODBC TRACE NIO1 invoking server method: sync null
> 2019-02-14 08:18:12.486 org.teiid.ODBC TRACE NIO1 invoking client method: org.teiid.transport.ODBCClientInstance at 6064753f ready [false, false]
> 2019-02-14 08:18:12.486 org.teiid.ODBC TRACE Worker0_QueryProcessorQueue212 invoking client method: org.teiid.transport.ODBCClientInstance at 3e802be1 ready [false, false]
> At the network level we see ready delivered before the data row.



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


More information about the teiid-issues mailing list