gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-exchange] branch master updated: include shard when marking depos


From: gnunet
Subject: [taler-exchange] branch master updated: include shard when marking deposits tiny/done to make better use of partitions/shards
Date: Thu, 03 Mar 2022 19:39:27 +0100

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository exchange.

The following commit(s) were added to refs/heads/master by this push:
     new f951cdef include shard when marking deposits tiny/done to make better 
use of partitions/shards
f951cdef is described below

commit f951cdef8ced141326887c1a996e8546774514f6
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Thu Mar 3 19:39:19 2022 +0100

    include shard when marking deposits tiny/done to make better use of 
partitions/shards
---
 src/exchange/taler-exchange-aggregator.c    |  4 ++++
 src/exchangedb/plugin_exchangedb_postgres.c | 21 ++++++++++++++++-----
 src/exchangedb/test_exchangedb.c            |  2 ++
 src/include/taler_exchangedb_plugin.h       |  4 ++++
 4 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/src/exchange/taler-exchange-aggregator.c 
b/src/exchange/taler-exchange-aggregator.c
index c552610a..58bf2073 100644
--- a/src/exchange/taler-exchange-aggregator.c
+++ b/src/exchange/taler-exchange-aggregator.c
@@ -488,6 +488,7 @@ deposit_cb (void *cls,
               "Aggregator marks deposit %llu as done\n",
               (unsigned long long) row_id);
   qs = db_plugin->mark_deposit_done (db_plugin->cls,
+                                     merchant_pub,
                                      row_id);
   if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != qs)
   {
@@ -610,6 +611,7 @@ aggregate_cb (void *cls,
     return qs;
   }
   qs = db_plugin->mark_deposit_done (db_plugin->cls,
+                                     &au->merchant_pub,
                                      row_id);
   if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != qs)
   {
@@ -842,12 +844,14 @@ run_aggregation (void *cls)
     }
     /* Mark transactions by row_id as minor */
     qs = db_plugin->mark_deposit_tiny (db_plugin->cls,
+                                       &au_active.merchant_pub,
                                        au_active.row_id);
     if (0 <= qs)
     {
       for (unsigned int i = 0; i<au_active.rows_offset; i++)
       {
         qs = db_plugin->mark_deposit_tiny (db_plugin->cls,
+                                           &au_active.merchant_pub,
                                            au_active.additional_rows[i]);
         if (0 > qs)
           break;
diff --git a/src/exchangedb/plugin_exchangedb_postgres.c 
b/src/exchangedb/plugin_exchangedb_postgres.c
index c9512e64..86480f29 100644
--- a/src/exchangedb/plugin_exchangedb_postgres.c
+++ b/src/exchangedb/plugin_exchangedb_postgres.c
@@ -1217,15 +1217,17 @@ prepare_statements (struct PostgresClosure *pg)
       "mark_deposit_tiny",
       "UPDATE deposits"
       " SET tiny=TRUE"
-      " WHERE deposit_serial_id=$1",
-      1),
+      " WHERE shard=$2"
+      "   AND deposit_serial_id=$1",
+      2),
     /* Used in #postgres_mark_deposit_done() */
     GNUNET_PQ_make_prepare (
       "mark_deposit_done",
       "UPDATE deposits"
       " SET done=TRUE"
-      " WHERE deposit_serial_id=$1;",
-      1),
+      " WHERE shard=$2"
+      "   AND deposit_serial_id=$1;",
+      2),
     /* Used in #postgres_get_coin_transactions() to obtain information
        about how a coin has been spend with /deposit requests. */
     GNUNET_PQ_make_prepare (
@@ -5429,16 +5431,20 @@ postgres_have_deposit2 (
  * @e iterate_ready_deposits()
  *
  * @param cls the @e cls of this struct with the plugin-specific state
+ * @param merchant_pub identifies the beneficiary of the deposit
  * @param rowid identifies the deposit row to modify
  * @return query result status
  */
 static enum GNUNET_DB_QueryStatus
 postgres_mark_deposit_tiny (void *cls,
+                            const struct TALER_MerchantPublicKeyP 
*merchant_pub,
                             uint64_t rowid)
 {
   struct PostgresClosure *pg = cls;
+  uint64_t deposit_shard = compute_shard (merchant_pub);
   struct GNUNET_PQ_QueryParam params[] = {
     GNUNET_PQ_query_param_uint64 (&rowid),
+    GNUNET_PQ_query_param_uint64 (&deposit_shard),
     GNUNET_PQ_query_param_end
   };
 
@@ -5454,16 +5460,20 @@ postgres_mark_deposit_tiny (void *cls,
  * @e iterate_ready_deposits() or @e iterate_matching_deposits().
  *
  * @param cls the @e cls of this struct with the plugin-specific state
+ * @param merchant_pub identifies the beneficiary of the deposit
  * @param rowid identifies the deposit row to modify
  * @return query result status
  */
 static enum GNUNET_DB_QueryStatus
 postgres_mark_deposit_done (void *cls,
+                            const struct TALER_MerchantPublicKeyP 
*merchant_pub,
                             uint64_t rowid)
 {
   struct PostgresClosure *pg = cls;
+  uint64_t deposit_shard = compute_shard (merchant_pub);
   struct GNUNET_PQ_QueryParam params[] = {
     GNUNET_PQ_query_param_uint64 (&rowid),
+    GNUNET_PQ_query_param_uint64 (&deposit_shard),
     GNUNET_PQ_query_param_end
   };
 
@@ -8054,7 +8064,8 @@ postgres_start_deferred_wire_out (void *cls)
 {
   struct PostgresClosure *pg = cls;
   struct GNUNET_PQ_ExecuteStatement es[] = {
-    GNUNET_PQ_make_execute ("START TRANSACTION ISOLATION LEVEL READ 
COMMITTED"),
+    GNUNET_PQ_make_execute (
+      "START TRANSACTION ISOLATION LEVEL READ COMMITTED;"),
     GNUNET_PQ_make_execute ("SET CONSTRAINTS ALL DEFERRED;"),
     GNUNET_PQ_EXECUTE_STATEMENT_END
   };
diff --git a/src/exchangedb/test_exchangedb.c b/src/exchangedb/test_exchangedb.c
index cad2983e..7ca1839f 100644
--- a/src/exchangedb/test_exchangedb.c
+++ b/src/exchangedb/test_exchangedb.c
@@ -2279,6 +2279,7 @@ run (void *cls)
                          "test-2"));
   FAILIF (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT !=
           plugin->mark_deposit_tiny (plugin->cls,
+                                     &deposit.merchant_pub,
                                      deposit_rowid));
   FAILIF (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS !=
           plugin->get_ready_deposit (plugin->cls,
@@ -2300,6 +2301,7 @@ run (void *cls)
                          "test-3"));
   FAILIF (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT !=
           plugin->mark_deposit_done (plugin->cls,
+                                     &deposit.merchant_pub,
                                      deposit_rowid));
   FAILIF (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS !=
           plugin->commit (plugin->cls));
diff --git a/src/include/taler_exchangedb_plugin.h 
b/src/include/taler_exchangedb_plugin.h
index 9841d45d..35bf673b 100644
--- a/src/include/taler_exchangedb_plugin.h
+++ b/src/include/taler_exchangedb_plugin.h
@@ -2979,11 +2979,13 @@ struct TALER_EXCHANGEDB_Plugin
    * returned by @e iterate_ready_deposits()
    *
    * @param cls the @e cls of this struct with the plugin-specific state
+   * @param merchant_pub identifies the beneficiary of the deposit
    * @param deposit_rowid identifies the deposit row to modify
    * @return query result status
    */
   enum GNUNET_DB_QueryStatus
   (*mark_deposit_tiny)(void *cls,
+                       const struct TALER_MerchantPublicKeyP *merchant_pub,
                        uint64_t rowid);
 
 
@@ -2993,11 +2995,13 @@ struct TALER_EXCHANGEDB_Plugin
    * @e iterate_ready_deposits() or @e iterate_matching_deposits().
    *
    * @param cls the @e cls of this struct with the plugin-specific state
+   * @param merchant_pub identifies the beneficiary of the deposit
    * @param deposit_rowid identifies the deposit row to modify
    * @return query result status
    */
   enum GNUNET_DB_QueryStatus
   (*mark_deposit_done)(void *cls,
+                       const struct TALER_MerchantPublicKeyP *merchant_pub,
                        uint64_t rowid);
 
 

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]