[
https://issues.apache.org/jira/browse/IGNITE-11795?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Aleksey Plekhanov updated IGNITE-11795:
---------------------------------------
Fix Version/s: (was: 2.9)
> JDBC thin datastreamer don't throws exception is case of problems on closing
> streamer.
> --------------------------------------------------------------------------------------
>
> Key: IGNITE-11795
> URL: https://issues.apache.org/jira/browse/IGNITE-11795
> Project: Ignite
> Issue Type: Bug
> Components: jdbc, sql, thin client
> Reporter: Sergey Antonov
> Assignee: Rodion
> Priority: Major
> Labels: newbie
>
> Now from code we can't detect problems, If some errors occurs in closing jdbc
> thin datastreamer. Now we could detect it in logs only. The main reason of
> this is using {{U.close()}} for streamers in
> {{SqlClientContext#disableStreaming()}}.
> You could add test to {{JdbcThinStreamingAbstractSelfTest}} and reproduce
> problem.
> {code:java}
> /**
> * @throws Exception if failed.
> */
> @Test
> public void testStreamedInsertFailsOnReadOnlyMode() throws Exception {
> for (Ignite grid : G.allGrids())
> ((IgniteEx) grid).context().cache().context().readOnlyMode(true);
> try {
> boolean failed = false;
> try (Connection ordinalCon = createOrdinaryConnection();
> Statement selectStmt = ordinalCon.createStatement()
> ) {
> try (ResultSet rs = selectStmt.executeQuery("select count(*)
> from PUBLIC.Person")) {
> assertTrue(rs.next());
> assertEquals(0, rs.getLong(1));
> }
> try (Connection conn = createStreamedConnection(true)) {
> try (PreparedStatement stmt =
> conn.prepareStatement("insert into
> PUBLIC.Person(\"id\", \"name\") values (?, ?)")
> ) {
> for (int i = 1; i <= 2; i++) {
> stmt.setInt(1, i);
> stmt.setString(2, nameForId(i));
> stmt.executeUpdate();
> }
> }
> }
> catch (Exception e) {
> log.error("Insert failed", e);
> failed = true;
> }
> try (ResultSet rs = selectStmt.executeQuery("select count(*)
> from PUBLIC.Person")) {
> assertTrue(rs.next());
> assertEquals("Insert should be failed!", 0,
> rs.getLong(1));
> }
> }
> assertTrue("Insert should be failed!", failed);
> }
> finally {
> for (Ignite grid : G.allGrids())
> ((IgniteEx)
> grid).context().cache().context().readOnlyMode(false);
> }
> }
> {code}
> Don't forget remove {{@Ignore}} annotation from
> {{JdbcThinStreamingAbstractSelfTest#testStreamedInsertFailsOnReadOnlyMode()}}
> test!
--
This message was sent by Atlassian Jira
(v8.3.4#803005)