This is an automated email from the ASF dual-hosted git repository. jiangtian pushed a commit to branch fix_70_71 in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
commit 693841f57b8ef5e7dd604ad73108c6f2b9d599f8 Author: 江天 <[email protected]> AuthorDate: Fri Mar 29 18:00:27 2019 +0800 fix jira issue 70 71 --- .../db/engine/overflow/io/OverflowResource.java | 36 ++++++++++++---------- .../org/apache/iotdb/jdbc/IoTDBConnection.java | 8 ++++- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/overflow/io/OverflowResource.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/overflow/io/OverflowResource.java index fbaf317..0b45d54 100644 --- a/iotdb/src/main/java/org/apache/iotdb/db/engine/overflow/io/OverflowResource.java +++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/overflow/io/OverflowResource.java @@ -106,31 +106,35 @@ public class OverflowResource { modificationFile = new ModificationFile(insertFilePath + ModificationFile.FILE_SUFFIX); } - private Pair<Long, Long> readPositionInfo() { - try(FileInputStream inputStream = new FileInputStream(positionFilePath)) { - byte[] insertPositionData = new byte[8]; - byte[] updatePositionData = new byte[8]; - int byteRead = inputStream.read(insertPositionData); - if (byteRead != 8) { - throw new IOException("Not enough bytes for insertPositionData"); - } - byteRead = inputStream.read(updatePositionData); - if (byteRead != 8) { - throw new IOException("Not enough bytes for updatePositionData"); + private Pair<Long, Long> readPositionInfo() throws IOException { + File positionFile = new File(positionFilePath); + if (positionFile.exists()) { + try(FileInputStream inputStream = new FileInputStream(positionFile)) { + byte[] insertPositionData = new byte[8]; + byte[] updatePositionData = new byte[8]; + int byteRead = inputStream.read(insertPositionData); + if (byteRead != 8) { + throw new IOException("Not enough bytes for insertPositionData"); + } + byteRead = inputStream.read(updatePositionData); + if (byteRead != 8) { + throw new IOException("Not enough bytes for updatePositionData"); + } + long lastInsertPosition = BytesUtils.bytesToLong(insertPositionData); + long lastUpdatePosition = BytesUtils.bytesToLong(updatePositionData); + return new Pair<>(lastInsertPosition, lastUpdatePosition); } - long lastInsertPosition = BytesUtils.bytesToLong(insertPositionData); - long lastUpdatePosition = BytesUtils.bytesToLong(updatePositionData); - return new Pair<>(lastInsertPosition, lastUpdatePosition); - } catch (IOException e) { + } else { + LOGGER.debug("No position info, returning a default value"); long left = 0; long right = 0; File insertTempFile = new File(insertFilePath); if (insertTempFile.exists()) { left = insertTempFile.length(); } - LOGGER.warn("Cannot read position info, returning a default value", e); return new Pair<>(left, right); } + } private void writePositionInfo(long lastInsertPosition, long lastUpdatePosition) diff --git a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBConnection.java b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBConnection.java index 871a665..815725a 100644 --- a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBConnection.java +++ b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBConnection.java @@ -427,7 +427,13 @@ public class IoTDBConnection implements Connection { TSOpenSessionResp openResp = client.openSession(openReq); // validate connection - Utils.verifySuccess(openResp.getStatus()); + try { + Utils.verifySuccess(openResp.getStatus()); + } catch (IoTDBSQLException e) { + // failed to connect, disconnect from the server + transport.close(); + throw e; + } if (!supportedProtocols.contains(openResp.getServerProtocolVersion())) { throw new TException("Unsupported TsFile protocol"); }
