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 2023/05/10 08:14:29 UTC

[iotdb] branch native_raft updated: change window retrival

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

jiangtian pushed a commit to branch native_raft
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/native_raft by this push:
     new ff97d4943d change window retrival
ff97d4943d is described below

commit ff97d4943d0901da54d77f6fdf0ea9b4d710dbf9
Author: Tian Jiang <jt...@163.com>
AuthorDate: Wed May 10 16:17:16 2023 +0800

    change window retrival
---
 .../protocol/log/dispatch/flowcontrol/FlowMonitor.java  | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/consensus/src/main/java/org/apache/iotdb/consensus/natraft/protocol/log/dispatch/flowcontrol/FlowMonitor.java b/consensus/src/main/java/org/apache/iotdb/consensus/natraft/protocol/log/dispatch/flowcontrol/FlowMonitor.java
index 5689a1effd..b69400725a 100644
--- a/consensus/src/main/java/org/apache/iotdb/consensus/natraft/protocol/log/dispatch/flowcontrol/FlowMonitor.java
+++ b/consensus/src/main/java/org/apache/iotdb/consensus/natraft/protocol/log/dispatch/flowcontrol/FlowMonitor.java
@@ -154,14 +154,27 @@ public class FlowMonitor {
     return flowSum * 1.0 / intervalSum * 1000;
   }
 
+  /**
+   * Get the latest windows whose number at most windowNum. Only windows within currenTime -
+   * windowNum * windowInterval will be returned, i.e., windows too old will not be returned.
+   *
+   * @param windowNum the maximum number of windows to be returned
+   * @return At most windowNum windows, all within currenTime - windowNum * windowInterval
+   */
   public List<FlowWindow> getLatestWindows(int windowNum) {
+    long currentTime = System.currentTimeMillis();
     List<FlowWindow> result = new ArrayList<>();
-    result.add(new FlowWindow(currWindowStart, currWindowSum));
+    if ((currentTime - currWindowStart) <= windowNum * windowInterval) {
+      result.add(new FlowWindow(currWindowStart, currWindowSum));
+    }
+
     Iterator<FlowWindow> windowIterator = windows.descendingIterator();
     for (int i = 1; i < windowNum; i++) {
       if (windowIterator.hasNext()) {
         FlowWindow window = windowIterator.next();
-        result.add(window);
+        if ((currentTime - window.start) <= windowNum * windowInterval) {
+          result.add(window);
+        }
       } else {
         break;
       }