You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@quickstep.apache.org by hb...@apache.org on 2016/07/01 04:41:47 UTC

[17/18] incubator-quickstep git commit: Bug fixed in Query Manager

Bug fixed in Query Manager

- Added a method to print probabilities.


Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/efd88a76
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/efd88a76
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/efd88a76

Branch: refs/heads/scheduler++
Commit: efd88a768e83ceec08d28c0216460265801052c1
Parents: 9635421
Author: Harshad Deshmukh <hb...@apache.org>
Authored: Thu Jun 30 23:40:25 2016 -0500
Committer: Harshad Deshmukh <hb...@apache.org>
Committed: Thu Jun 30 23:41:05 2016 -0500

----------------------------------------------------------------------
 query_execution/Learner.cpp          | 18 ++++++++++++++++++
 query_execution/Learner.hpp          |  2 ++
 query_execution/ProbabilityStore.hpp | 12 ++++++++++++
 query_execution/QueryManager.cpp     |  7 ++++---
 4 files changed, 36 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/efd88a76/query_execution/Learner.cpp
----------------------------------------------------------------------
diff --git a/query_execution/Learner.cpp b/query_execution/Learner.cpp
index 183d688..3c6f42b 100644
--- a/query_execution/Learner.cpp
+++ b/query_execution/Learner.cpp
@@ -61,6 +61,7 @@ void Learner::addCompletionFeedback(
   }
   updateProbabilitiesForQueriesInPriorityLevel(priority_level, query_id);
   updateProbabilitiesOfAllPriorityLevels();
+  printProbabilitiesForPriorityLevel(priority_level);
 }
 
 void Learner::updateProbabilitiesForQueriesInPriorityLevel(
@@ -268,4 +269,21 @@ void Learner::checkAndRemovePriorityLevel(const std::size_t priority_level) {
   }
 }
 
+void Learner::printProbabilitiesForPriorityLevel(const std::size_t priority_level) {
+  DCHECK(isPriorityLevelPresent(priority_level));
+  if (hasFeedbackFromAllQueriesInPriorityLevel(priority_level)) {
+    DCHECK(current_probabilities_.at(priority_level) != nullptr);
+    const auto it = current_probabilities_.find(priority_level);
+    if (it->second->getNumObjects() > 0) {
+      it->second->printIndividualProbabilities();
+    }
+  } else {
+    DCHECK(default_probabilities_.at(priority_level) != nullptr);
+    const auto it = default_probabilities_.find(priority_level);
+    if (it->second->getNumObjects() > 0) {
+      it->second->printIndividualProbabilities();
+    }
+  }
+}
+
 }  // namespace quickstep

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/efd88a76/query_execution/Learner.hpp
----------------------------------------------------------------------
diff --git a/query_execution/Learner.hpp b/query_execution/Learner.hpp
index 024dc9b..6cea325 100644
--- a/query_execution/Learner.hpp
+++ b/query_execution/Learner.hpp
@@ -470,6 +470,8 @@ class Learner {
     return true;
   }
 
+  void printProbabilitiesForPriorityLevel(const std::size_t priority_level);
+
   // Key = Priority level, value = A vector of pairs.
   // Each pair:
   // 1st element: Query ID.

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/efd88a76/query_execution/ProbabilityStore.hpp
----------------------------------------------------------------------
diff --git a/query_execution/ProbabilityStore.hpp b/query_execution/ProbabilityStore.hpp
index 4ae085e..bcb2c0d 100644
--- a/query_execution/ProbabilityStore.hpp
+++ b/query_execution/ProbabilityStore.hpp
@@ -21,6 +21,7 @@
 #include <algorithm>
 #include <cstddef>
 #include <random>
+#include <string>
 #include <unordered_map>
 #include <utility>
 #include <vector>
@@ -234,6 +235,17 @@ class ProbabilityStore {
     return getPropertyForProbability(chosen_probability);
   }
 
+  void printIndividualProbabilities() const {
+    std::string result = "";
+    for (auto prob_pair : individual_probabilities_) {
+      result += std::to_string(prob_pair.first);
+      result += ":";
+      result += std::to_string(prob_pair.second.second);
+      result += "|";
+    }
+    LOG(INFO) << result;
+  }
+
  private:
   class ProbabilityInfo {
    public:

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/efd88a76/query_execution/QueryManager.cpp
----------------------------------------------------------------------
diff --git a/query_execution/QueryManager.cpp b/query_execution/QueryManager.cpp
index d20b592..3be5ee4 100644
--- a/query_execution/QueryManager.cpp
+++ b/query_execution/QueryManager.cpp
@@ -238,16 +238,17 @@ QueryManager::QueryStatusCode QueryManager::processMessage(
       LOG(FATAL) << "Unknown message type found in QueryManager";
   }
 
+  QueryStatusCode result = QueryStatusCode::kNone;
   if (query_exec_state_->hasExecutionFinished(op_index)) {
-    return QueryStatusCode::kOperatorExecuted;
+    result = QueryStatusCode::kOperatorExecuted;
   }
 
   // As kQueryExecuted takes precedence over kOperatorExecuted, we check again.
   if (query_exec_state_->hasQueryExecutionFinished()) {
-    return QueryStatusCode::kQueryExecuted;
+    result = QueryStatusCode::kQueryExecuted;
   }
 
-  return QueryStatusCode::kNone;
+  return result;
 }
 
 void QueryManager::processFeedbackMessage(