From 545d9126af866b99b40037f5d7a7f580aecd65ab Mon Sep 17 00:00:00 2001 From: Tianan Li Date: Thu, 3 Sep 2020 04:58:22 -0700 Subject: [PATCH] Fix thrift put some unnecessary bytes in a ByteBuffer (#1655) --- .../sync/receiver/transfer/SyncServiceImpl.java | 3 ++- .../db/sync/sender/manage/SyncFileManager.java | 16 ++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/sync/receiver/transfer/SyncServiceImpl.java b/server/src/main/java/org/apache/iotdb/db/sync/receiver/transfer/SyncServiceImpl.java index 88fd164585..08833645c8 100644 --- a/server/src/main/java/org/apache/iotdb/db/sync/receiver/transfer/SyncServiceImpl.java +++ b/server/src/main/java/org/apache/iotdb/db/sync/receiver/transfer/SyncServiceImpl.java @@ -212,8 +212,9 @@ public class SyncServiceImpl implements SyncService.Iface { @Override public SyncStatus syncData(ByteBuffer buff) { try { + int pos = buff.position(); currentFileWriter.get().write(buff); - buff.flip(); + buff.position(pos); messageDigest.get().update(buff); } catch (IOException e) { logger.error("Can not sync data for file {}", currentFile.get().getAbsoluteFile(), e); diff --git a/server/src/main/java/org/apache/iotdb/db/sync/sender/manage/SyncFileManager.java b/server/src/main/java/org/apache/iotdb/db/sync/sender/manage/SyncFileManager.java index 3835f7423b..260594d0fe 100644 --- a/server/src/main/java/org/apache/iotdb/db/sync/sender/manage/SyncFileManager.java +++ b/server/src/main/java/org/apache/iotdb/db/sync/sender/manage/SyncFileManager.java @@ -101,12 +101,16 @@ public class SyncFileManager implements ISyncFileManager { allSGs.putIfAbsent(sgFolder.getName(), new HashSet<>()); currentAllLocalFiles.putIfAbsent(sgFolder.getName(), new HashMap<>()); for (File timeRangeFolder : sgFolder.listFiles()) { - Long timeRangeId = Long.parseLong(timeRangeFolder.getName()); - currentAllLocalFiles.get(sgFolder.getName()).putIfAbsent(timeRangeId, new HashSet<>()); - File[] files = timeRangeFolder.listFiles(); - Arrays.stream(files) - .forEach(file -> currentAllLocalFiles.get(sgFolder.getName()).get(timeRangeId) - .add(new File(timeRangeFolder.getAbsolutePath(), file.getName()))); + try { + Long timeRangeId = Long.parseLong(timeRangeFolder.getName()); + currentAllLocalFiles.get(sgFolder.getName()).putIfAbsent(timeRangeId, new HashSet<>()); + File[] files = timeRangeFolder.listFiles(); + Arrays.stream(files) + .forEach(file -> currentAllLocalFiles.get(sgFolder.getName()).get(timeRangeId) + .add(new File(timeRangeFolder.getAbsolutePath(), file.getName()))); + } catch (Exception e) { + LOGGER.error("Invalid time range folder: {}", timeRangeFolder.getAbsolutePath(), e); + } } } -- GitLab