You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by hx...@apache.org on 2019/02/23 05:57:20 UTC

[incubator-iotdb] branch master updated: fix that an empty BufferWriteProcessor will fail writing WAL of deletion

This is an automated email from the ASF dual-hosted git repository.

hxd pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 6819e33  fix that an empty BufferWriteProcessor will fail writing WAL of deletion
6819e33 is described below

commit 6819e330d9c438c15173bf1009bbeee3a1bfa9d4
Author: jt <jt...@163.com>
AuthorDate: Sat Feb 23 11:25:08 2019 +0800

    fix that an empty BufferWriteProcessor will fail writing WAL of deletion
---
 .../java/org/apache/iotdb/db/engine/filenode/FileNodeManager.java | 6 +++++-
 .../org/apache/iotdb/db/engine/filenode/FileNodeProcessor.java    | 4 ++--
 .../java/org/apache/iotdb/db/qp/executor/OverflowQPExecutor.java  | 8 ++------
 3 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/FileNodeManager.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/FileNodeManager.java
index c2f4126..f4e4864 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/FileNodeManager.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/FileNodeManager.java
@@ -500,7 +500,11 @@ public class FileNodeManager implements IStatistic, IService {
           BufferWriteProcessor bufferWriteProcessor;
           try {
             overflowProcessor = fileNodeProcessor.getOverflowProcessor(filenodeName);
-            bufferWriteProcessor = fileNodeProcessor.getBufferWriteProcessor();
+            // in case that no BufferWriteProcessor is available, a new BufferWriteProcessor is
+            // needed to access LogNode.
+            // TODO this may make the time range of the next TsFile a little wider
+            bufferWriteProcessor = fileNodeProcessor.getBufferWriteProcessor(filenodeName,
+                lastUpdateTime + 1);
           } catch (IOException | FileNodeProcessorException e) {
             LOGGER.error("Getting the processor failed, the filenode is {}, delete time is {}.",
                 filenodeName, timestamp);
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/FileNodeProcessor.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/FileNodeProcessor.java
index b0921f3..a7c4e77 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/FileNodeProcessor.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/FileNodeProcessor.java
@@ -1876,8 +1876,8 @@ public class FileNodeProcessor extends Processor implements IStatistic {
       }
       deleteBufferWriteFiles(deviceId, deletion, updatedModFiles);
       // delete data in memory
-      OverflowProcessor overflowProcessor = getOverflowProcessor(getProcessorName());
-      overflowProcessor.delete(deviceId, measurementId, timestamp, version, updatedModFiles);
+      OverflowProcessor ofProcessor = getOverflowProcessor(getProcessorName());
+      ofProcessor.delete(deviceId, measurementId, timestamp, version, updatedModFiles);
       if (bufferWriteProcessor != null) {
         bufferWriteProcessor.delete(deviceId, measurementId, timestamp);
       }
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/qp/executor/OverflowQPExecutor.java b/iotdb/src/main/java/org/apache/iotdb/db/qp/executor/OverflowQPExecutor.java
index 02f25f2..2a41019 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/qp/executor/OverflowQPExecutor.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/qp/executor/OverflowQPExecutor.java
@@ -225,14 +225,10 @@ public class OverflowQPExecutor extends QueryProcessExecutor {
             String.format("Timeseries %s does not exist.", path.getFullPath()));
       }
       mManager.getFileNameByPath(path.getFullPath());
-      TSDataType type = mManager.getSeriesType(path.getFullPath());
       fileNodeManager.delete(deviceId, measurementId, timestamp);
       return true;
-    } catch (PathErrorException e) {
-      throw new ProcessorException(e.getMessage());
-    } catch (FileNodeManagerException e) {
-      e.printStackTrace();
-      throw new ProcessorException(e.getMessage());
+    } catch (PathErrorException | FileNodeManagerException e) {
+      throw new ProcessorException(e);
     }
   }