Date Posted:
Product: TIBCO Spotfire®
Product: TIBCO Spotfire®
Problem:
Unable to load on-demand data with a JDBC connection from the Oracle database.
Solution:
When you are using an Oracle JDBC connection to an analysis file which is migrated from a different version of Spotfire, you may come across issues when loading on-demand data from the same DXP which worked fine in the previous version of Spotfire.
You may see the below error messages:
ERROR 2018-12-11T04:58:56,190-0500 [*pool-13-thread-6, USER_NAME, #785569, #3311168*] im.ds.SQLUtilities: Could not rollback transaction
java.sql.SQLException: Protocol violation: [ 0, ]
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:669) ~[ojdbc7.jar:12.1.0.1.0]
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:249) ~[ojdbc7.jar:12.1.0.1.0]
at oracle.jdbc.driver.T4C7Ocommoncall.doOROLLBACK(T4C7Ocommoncall.java:66) ~[ojdbc7.jar:12.1.0.1.0]
at oracle.jdbc.driver.T4CConnection.doRollback(T4CConnection.java:906) ~[ojdbc7.jar:12.1.0.1.0]
at oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.java:4539) ~[ojdbc7.jar:12.1.0.1.0]
at com.spotfire.server.util.sql.PooledConnection.rollback(PooledConnection.java:534) ~[server.jar:?]
at com.spotfire.ws.im.ds.sql.SQLUtilities.rollback(SQLUtilities.java:262) ~[server-is.jar:?]
at com.spotfire.ws.im.ds.sql.SQLDataSource.closeConnection(SQLDataSource.java:445) ~[server-is.jar:?]
at com.spotfire.ws.im.ds.sql.SQLDataSource.loggedCloseConnection(SQLDataSource.java:421) ~[server-is.jar:?]
at com.spotfire.ws.im.ds.sql.SQLDataSource.doGetData(SQLDataSource.java:391) ~[server-is.jar:?]
at com.spotfire.ws.dat.AbstractOperator.getData(AbstractOperator.java:306) ~[server-is.jar:?]
at com.spotfire.ws.dat.Pipe.doGetData(Pipe.java:172) ~[server-is.jar:?]
at com.spotfire.ws.im.QueryPipe.doGetData(QueryPipe.java:209) ~[server-is.jar:?]
at com.spotfire.ws.dat.AbstractOperator.getData(AbstractOperator.java:306) ~[server-is.jar:?]
at com.spotfire.ws.dat.Formatter.getNextRow(Formatter.java:158) ~[server-is.jar:?]
at com.spotfire.ws.dat.sbdf.formatter.SpotfireBinaryDataFormatter.getDataForSlice(SpotfireBinaryDataFormatter.java:388) ~[server-is.jar:?]
at com.spotfire.ws.dat.sbdf.formatter.SpotfireBinaryDataFormatter.writeData(SpotfireBinaryDataFormatter.java:242) ~[server-is.jar:?]
at com.spotfire.ws.dat.sbdf.formatter.SpotfireBinaryDataFormatter.getData(SpotfireBinaryDataFormatter.java:194) ~[server-is.jar:?]
at com.spotfire.ws.dat.Job$GetDataTask.execute(Job.java:951) ~[server-is.jar:?]
at com.spotfire.ws.dat.Job$Task.run(Job.java:753) ~[server-is.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_144]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_144]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_144]
ERROR 2018-12-11T04:58:56,190-0500 [*pool-13-thread-6, USER_NAME, #785569, #3311168*] ws.dat.AbstractOperator: Get data from job failed.
com.spotfire.ws.dat.OperatorException: com.spotfire.ws.im.IMException: Failed to get data: java.io.IOException: Protocol violation: [ 14, 76, ]
at com.spotfire.ws.im.ds.sql.SQLDataSource.doGetData(SQLDataSource.java:393) ~[server-is.jar:?]
at com.spotfire.ws.dat.AbstractOperator.getData(AbstractOperator.java:306) ~[server-is.jar:?]
at com.spotfire.ws.dat.Pipe.doGetData(Pipe.java:172) ~[server-is.jar:?]
at com.spotfire.ws.im.QueryPipe.doGetData(QueryPipe.java:209) ~[server-is.jar:?]
at com.spotfire.ws.dat.AbstractOperator.getData(AbstractOperator.java:306) ~[server-is.jar:?]
at com.spotfire.ws.dat.Formatter.getNextRow(Formatter.java:158) ~[server-is.jar:?]
at com.spotfire.ws.dat.sbdf.formatter.SpotfireBinaryDataFormatter.getDataForSlice(SpotfireBinaryDataFormatter.java:388) ~[server-is.jar:?]
at com.spotfire.ws.dat.sbdf.formatter.SpotfireBinaryDataFormatter.writeData(SpotfireBinaryDataFormatter.java:242) ~[server-is.jar:?]
at com.spotfire.ws.dat.sbdf.formatter.SpotfireBinaryDataFormatter.getData(SpotfireBinaryDataFormatter.java:194) ~[server-is.jar:?]
at com.spotfire.ws.dat.Job$GetDataTask.execute(Job.java:951) ~[server-is.jar:?]
at com.spotfire.ws.dat.Job$Task.run(Job.java:753) ~[server-is.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_144]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_144]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_144]
Caused by: com.spotfire.ws.im.IMException: Failed to get data: java.io.IOException: Protocol violation: [ 14, 76, ]
... 14 more
Caused by: java.sql.SQLException: java.io.IOException: Protocol violation: [ 14, 76, ]
at com.spotfire.ws.dat.FasterBasicRow$BasicFieldSetter$AbstractClobFieldSetter.setValue(FasterBasicRow.java:459) ~[server-is.jar:?]
at com.spotfire.ws.dat.FasterBasicRow.setValues(FasterBasicRow.java:136) ~[server-is.jar:?]
at com.spotfire.ws.im.ds.sql.SQLQuerySession.doGetData(SQLQuerySession.java:422) ~[server-is.jar:?]
at com.spotfire.ws.im.ds.sql.SQLQuerySession.getData(SQLQuerySession.java:408) ~[server-is.jar:?]
at com.spotfire.ws.im.ds.sql.SQLDataSource.doGetData(SQLDataSource.java:388) ~[server-is.jar:?]
... 13 more
Caused by: java.io.IOException: Protocol violation: [ 14, 76, ]
at oracle.jdbc.driver.OracleClobReader.needChars(OracleClobReader.java:264) ~[ojdbc7.jar:12.1.0.1.0]
at oracle.jdbc.driver.OracleClobReader.read(OracleClobReader.java:195) ~[ojdbc7.jar:12.1.0.1.0]
at java.io.Reader.read(Reader.java:140) ~[?:1.8.0_144]
at com.spotfire.ws.dat.FasterBasicRow$BasicFieldSetter$AbstractClobFieldSetter.setValue(FasterBasicRow.java:450) ~[server-is.jar:?]
at com.spotfire.ws.dat.FasterBasicRow.setValues(FasterBasicRow.java:136) ~[server-is.jar:?]
at com.spotfire.ws.im.ds.sql.SQLQuerySession.doGetData(SQLQuerySession.java:422) ~[server-is.jar:?]
at com.spotfire.ws.im.ds.sql.SQLQuerySession.getData(SQLQuerySession.java:408) ~[server-is.jar:?]
at com.spotfire.ws.im.ds.sql.SQLDataSource.doGetData(SQLDataSource.java:388) ~[server-is.jar:?]
... 13 more
Caused by: java.sql.SQLException: Protocol violation: [ 14, 76, ]
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:669) ~[ojdbc7.jar:12.1.0.1.0]
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:249) ~[ojdbc7.jar:12.1.0.1.0]
at oracle.jdbc.driver.T4C8TTIClob.read(T4C8TTIClob.java:245) ~[ojdbc7.jar:12.1.0.1.0]
at oracle.jdbc.driver.T4CConnection.getChars(T4CConnection.java:3901) ~[ojdbc7.jar:12.1.0.1.0]
at oracle.sql.CLOB.getChars(CLOB.java:517) ~[ojdbc7.jar:12.1.0.1.0]
at oracle.jdbc.driver.OracleClobReader.needChars(OracleClobReader.java:245) ~[ojdbc7.jar:12.1.0.1.0]
at oracle.jdbc.driver.OracleClobReader.read(OracleClobReader.java:195) ~[ojdbc7.jar:12.1.0.1.0]
at java.io.Reader.read(Reader.java:140) ~[?:1.8.0_144]
at com.spotfire.ws.dat.FasterBasicRow$BasicFieldSetter$AbstractClobFieldSetter.setValue(FasterBasicRow.java:450) ~[server-is.jar:?]
at com.spotfire.ws.dat.FasterBasicRow.setValues(FasterBasicRow.java:136) ~[server-is.jar:?]
at com.spotfire.ws.im.ds.sql.SQLQuerySession.doGetData(SQLQuerySession.java:422) ~[server-is.jar:?]
at com.spotfire.ws.im.ds.sql.SQLQuerySession.getData(SQLQuerySession.java:408) ~[server-is.jar:?]
at com.spotfire.ws.im.ds.sql.SQLDataSource.doGetData(SQLDataSource.java:388) ~[server-is.jar:?]
... 13 more
Confirm the JDBC driver which you are using for the Oracle (ojdbcX.jar). This will be present either at:C:\TIBCO\tss\7.XX.X\tomcat\lib
or
C:\TIBCO\tss\7.XX.X\tomcat\webapps\spotfire\WEB-INF\lib
You may need to verify if the ojdbc driver which is being used in both the versions of Spotfire is correct and also confirm the exact driver compatible with your version of Oracle database.
https://confluence.atlassian.com/confkb/java-sql-sqlexception-protocol-violation-caught-while-accessing-a-page-and-oracle-db-is-used-781393258.html