Browse Source

fix db update error

hzq 7 months ago
parent
commit
0665a5b5bf

+ 28 - 5
frameworks/C++/paozhu/paozhu_benchmark/controller/src/techempower.cpp

@@ -42,7 +42,12 @@ asio::awaitable<std::string> techempowerdb(std::shared_ptr<httppeer> peer)
     unsigned int rd_num = rand_range(1, 10000);
     myworld.where("id", rd_num);
     myworld.limit(1);
-    co_await myworld.async_fetch_one();
+    std::size_t n = co_await myworld.async_fetch_one();
+    if (n == 0)
+    {
+        n = co_await myworld.async_fetch_one();
+    }
+
     peer->output = myworld.data_tojson();
     co_return "";
 }
@@ -69,7 +74,11 @@ asio::awaitable<std::string> techempowerqueries(std::shared_ptr<httppeer> peer)
         myworld.wheresql.clear();
         unsigned int rd_num = rand_range(1, 10000);
         myworld.where("id", rd_num);
-        co_await myworld.async_fetch_append();
+        std::size_t n = co_await myworld.async_fetch_append();
+        if (n == 0)
+        {
+            n = co_await myworld.async_fetch_append();
+        }
     }
 
     peer->output = myworld.to_json();
@@ -83,7 +92,12 @@ asio::awaitable<std::string> techempowerfortunes(std::shared_ptr<httppeer> peer)
     peer->set_header("Date", get_gmttime());
 
     auto myfortune = orm::Fortune();
-    co_await myfortune.async_fetch();
+    std::size_t n  = co_await myfortune.async_fetch();
+    if (n == 0)
+    {
+        n = co_await myfortune.async_fetch();
+    }
+
     myfortune.data.id      = 0;
     myfortune.data.message = "Additional fortune added at request time.";
     myfortune.record.push_back(myfortune.data);
@@ -130,13 +144,22 @@ asio::awaitable<std::string> techempowerupdates(std::shared_ptr<httppeer> peer)
     {
         myworld.wheresql.clear();
         myworld.where("id", rand_range(1, 10000));
-        co_await myworld.async_fetch_append();
+        std::size_t n = co_await myworld.async_fetch_append();
+        if (n == 0)
+        {
+            n = co_await myworld.async_fetch_append();
+        }
         if (myworld.effect() > 0)
         {
             unsigned int j                 = myworld.record.size() - 1;
             myworld.data.randomnumber      = rand_range(1, 10000);
             myworld.record[j].randomnumber = myworld.data.randomnumber;
-            co_await myworld.async_update("randomnumber");
+
+            n = co_await myworld.async_update("randomnumber");
+            if (n == 0)
+            {
+                n = co_await myworld.async_update("randomnumber");
+            }
         }
     }
     peer->output = myworld.to_json();