You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ji...@apache.org on 2019/06/21 13:31:18 UTC
[incubator-iotdb] branch feature_async_close_tsfile updated: some
refinements
This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch feature_async_close_tsfile
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
The following commit(s) were added to refs/heads/feature_async_close_tsfile by this push:
new d46227c some refinements
d46227c is described below
commit d46227c18d5dd787334cbbaab80a976fcc5031a9
Author: 江天 <jt...@163.com>
AuthorDate: Fri Jun 21 21:29:13 2019 +0800
some refinements
---
.../java/org/apache/iotdb/db/writelog/recover/LogReplayer.java | 8 ++++++++
.../iotdb/db/writelog/recover/SeqTsFileRecoverPerformer.java | 5 +++++
.../iotdb/db/writelog/recover/UnseqTsFileRecoverPerformer.java | 1 +
3 files changed, 14 insertions(+)
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java b/iotdb/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
index 822ada6..75e65c2 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
@@ -31,6 +31,7 @@ import org.apache.iotdb.db.exception.ProcessorException;
import org.apache.iotdb.db.qp.physical.PhysicalPlan;
import org.apache.iotdb.db.qp.physical.crud.DeletePlan;
import org.apache.iotdb.db.qp.physical.crud.InsertPlan;
+import org.apache.iotdb.db.qp.physical.crud.UpdatePlan;
import org.apache.iotdb.db.writelog.io.ILogReader;
import org.apache.iotdb.db.writelog.manager.MultiFileLogNodeManager;
import org.apache.iotdb.db.writelog.node.WriteLogNode;
@@ -90,6 +91,8 @@ public class LogReplayer {
replayInsert((InsertPlan) plan);
} else if (plan instanceof DeletePlan) {
replayDelete((DeletePlan) plan);
+ } else if (plan instanceof UpdatePlan) {
+ replayUpdate((UpdatePlan) plan);
}
}
} catch (IOException e) {
@@ -126,4 +129,9 @@ public class LogReplayer {
}
recoverMemTable.insert(tsRecord);
}
+
+ private void replayUpdate(UpdatePlan updatePlan) {
+ // TODO: support update
+ throw new UnsupportedOperationException("Update not supported");
+ }
}
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/writelog/recover/SeqTsFileRecoverPerformer.java b/iotdb/src/main/java/org/apache/iotdb/db/writelog/recover/SeqTsFileRecoverPerformer.java
index d7e31e2..339a39a 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/writelog/recover/SeqTsFileRecoverPerformer.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/writelog/recover/SeqTsFileRecoverPerformer.java
@@ -74,6 +74,7 @@ public class SeqTsFileRecoverPerformer {
if (!insertFile.exists()) {
return;
}
+ // remove corrupted part of the TsFile
NativeRestorableIOWriter restorableTsFileIOWriter = recoverFile(insertFile);
// due to failure, the last ChunkGroup may contain the same data as the WALs, so the time
@@ -85,16 +86,19 @@ public class SeqTsFileRecoverPerformer {
}
}
+ // redo logs
logReplayer.replayLogs();
if (recoverMemTable.isEmpty()) {
removeTruncatePosition(insertFile);
return;
}
+ // flush logs
MemTableFlushTask tableFlushTask = new MemTableFlushTask(restorableTsFileIOWriter,
logNodePrefix, 0, (a,b) -> {});
tableFlushTask.flushMemTable(fileSchema, recoverMemTable, versionController.nextVersion());
+ // close file
try {
restorableTsFileIOWriter.endFile(fileSchema);
} catch (IOException e) {
@@ -103,6 +107,7 @@ public class SeqTsFileRecoverPerformer {
removeTruncatePosition(insertFile);
+ // clean logs
try {
MultiFileLogNodeManager.getInstance().deleteNode(logNodePrefix + new File(insertFilePath).getName());
} catch (IOException e) {
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/writelog/recover/UnseqTsFileRecoverPerformer.java b/iotdb/src/main/java/org/apache/iotdb/db/writelog/recover/UnseqTsFileRecoverPerformer.java
index ea577fa..fe6aa50 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/writelog/recover/UnseqTsFileRecoverPerformer.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/writelog/recover/UnseqTsFileRecoverPerformer.java
@@ -58,6 +58,7 @@ public class UnseqTsFileRecoverPerformer {
LogReplayer replayer = new LogReplayer(logNodePrefix, insertFilePath,
resource.getModificationFile(), resource.getVersionController(), null,
fileSchema, memTable);
+
replayer.replayLogs();
if (memTable.isEmpty()) {
return;