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

marklau99 pushed a commit to branch IOTDB-3709
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/IOTDB-3709 by this push:
     new 8367f113df fix loop linked list
8367f113df is described below

commit 8367f113df6f5d3f38060e33da7559c36b152128
Author: Liu Xuxin <[email protected]>
AuthorDate: Fri Jul 1 20:40:41 2022 +0800

    fix loop linked list
---
 .../apache/iotdb/db/engine/storagegroup/TsFileResourceList.java   | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResourceList.java
 
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResourceList.java
index 3446cd634e..27d7e4a579 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResourceList.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResourceList.java
@@ -47,6 +47,9 @@ public class TsFileResourceList implements 
List<TsFileResource> {
    * @param newNode the file to insert
    */
   public void insertBefore(TsFileResource node, TsFileResource newNode) {
+    if (newNode.equals(node)) {
+      return;
+    }
     newNode.prev = node.prev;
     newNode.next = node;
     if (node.prev == null) {
@@ -65,6 +68,9 @@ public class TsFileResourceList implements 
List<TsFileResource> {
    * @param newNode the file to insert
    */
   public void insertAfter(TsFileResource node, TsFileResource newNode) {
+    if (node.equals(newNode)) {
+      return;
+    }
     newNode.prev = node;
     newNode.next = node.next;
     if (node.next == null) {
@@ -135,7 +141,7 @@ public class TsFileResourceList implements 
List<TsFileResource> {
    * node's, the new node will be inserted to the tail of the list.
    */
   public boolean keepOrderInsert(TsFileResource newNode) throws IOException {
-    if (newNode.prev != null || newNode.next != null) {
+    if (newNode.prev != null || newNode.next != null || (count == 1 && header 
== newNode)) {
       // this node already in a list
       return false;
     }

Reply via email to