From 6a1074cec70411d3614c5817824c99bb1c1dbda3 Mon Sep 17 00:00:00 2001 From: Alexandre Montplaisir Date: Tue, 1 May 2012 23:30:28 -0400 Subject: [PATCH] tmf: Correctly save the history backend's end time Signed-off-by: Alexandre Montplaisir --- .../statesystem/backend/historytree/HistoryTree.java | 11 ++++++++++- .../backend/historytree/HistoryTreeBackend.java | 2 +- .../historytree/ThreadedHistoryTreeBackend.java | 5 +++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/statesystem/backend/historytree/HistoryTree.java b/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/statesystem/backend/historytree/HistoryTree.java index 1ab15bd132..8e550f1c4c 100644 --- a/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/statesystem/backend/historytree/HistoryTree.java +++ b/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/statesystem/backend/historytree/HistoryTree.java @@ -197,11 +197,20 @@ class HistoryTree { * * @param requestedEndTime */ - void closeTree() { + void closeTree(long requestedEndTime) { FileChannel fc; ByteBuffer buffer; int i, res; + /* + * Work-around the "empty branches" that get created when the root node + * becomes full. Overwrite the tree's end time with the original wanted + * end-time, to ensure no queries are sent into those empty nodes. + * + * This won't be needed once extended nodes are implemented. + */ + this.treeEnd = requestedEndTime; + /* Close off the latest branch of the tree */ for (i = 0; i < latestBranch.size(); i++) { latestBranch.get(i).closeThisNode(treeEnd); diff --git a/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/statesystem/backend/historytree/HistoryTreeBackend.java b/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/statesystem/backend/historytree/HistoryTreeBackend.java index 1a6ff3967c..15768fdf1f 100644 --- a/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/statesystem/backend/historytree/HistoryTreeBackend.java +++ b/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/statesystem/backend/historytree/HistoryTreeBackend.java @@ -113,7 +113,7 @@ public class HistoryTreeBackend implements IStateHistoryBackend { @Override public void finishedBuilding(long endTime) { - sht.closeTree(); + sht.closeTree(endTime); } @Override diff --git a/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/statesystem/backend/historytree/ThreadedHistoryTreeBackend.java b/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/statesystem/backend/historytree/ThreadedHistoryTreeBackend.java index c645dd0d5b..e8e639e857 100644 --- a/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/statesystem/backend/historytree/ThreadedHistoryTreeBackend.java +++ b/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/statesystem/backend/historytree/ThreadedHistoryTreeBackend.java @@ -164,9 +164,10 @@ public final class ThreadedHistoryTreeBackend extends HistoryTreeBackend } assert (currentInterval.getAttribute() == -1); /* - * We've been told we're done, let's write down everything and quit + * We've been told we're done, let's write down everything and quit. + * The end time of this "signal interval" is actually correct. */ - sht.closeTree(); + sht.closeTree(currentInterval.getEndTime()); return; } catch (InterruptedException e) { /* We've been interrupted abnormally */ -- 2.34.1