]
Steven Hawkins commented on TEIID-5658:
---------------------------------------
This seems to be addressed as suggested in the issue - don't directly call write, just
queue everything with the event loop.
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@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@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@6064753f sendResultSetDescription
[[org.teiid.odbc.PGUtil$PgColInfo@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@6064753f sendResults [null,
org.teiid.jdbc.ResultSetImpl@4516a1a2, [org.teiid.odbc.PGUtil$PgColInfo@333d1d1b],
org.teiid.client.util.ResultsFuture@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@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@6064753f ready [false, false]
2019-02-14 08:18:12.486 org.teiid.ODBC TRACE Worker0_QueryProcessorQueue212 invoking
client method: org.teiid.transport.ODBCClientInstance@3e802be1 ready [false, false]
At the network level we see ready delivered before the data row.