gnunet-svn
[Top][All Lists]
Advanced

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

[taler-exchange] branch master updated: add basic metrics collection log


From: gnunet
Subject: [taler-exchange] branch master updated: add basic metrics collection logic
Date: Tue, 07 Dec 2021 21:16:40 +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 71933dd2 add basic metrics collection logic
71933dd2 is described below

commit 71933dd2e9b5b66dbc72cdde9ea7b498a11db197
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Tue Dec 7 21:16:38 2021 +0100

    add basic metrics collection logic
---
 src/exchange/taler-exchange-httpd_auditors.c       |  1 +
 src/exchange/taler-exchange-httpd_db.c             | 21 ++++------------
 src/exchange/taler-exchange-httpd_db.h             |  3 +++
 src/exchange/taler-exchange-httpd_deposit.c        |  1 +
 src/exchange/taler-exchange-httpd_deposits_get.c   |  1 +
 src/exchange/taler-exchange-httpd_kyc-check.c      |  1 +
 src/exchange/taler-exchange-httpd_kyc-proof.c      |  1 +
 src/exchange/taler-exchange-httpd_kyc-wallet.c     |  1 +
 src/exchange/taler-exchange-httpd_link.c           |  1 +
 .../taler-exchange-httpd_management_auditors.c     |  1 +
 ...exchange-httpd_management_auditors_AP_disable.c |  1 +
 .../taler-exchange-httpd_management_post_keys.c    |  1 +
 .../taler-exchange-httpd_management_wire_disable.c |  1 +
 .../taler-exchange-httpd_management_wire_enable.c  |  1 +
 .../taler-exchange-httpd_management_wire_fees.c    |  1 +
 src/exchange/taler-exchange-httpd_melt.c           |  1 +
 src/exchange/taler-exchange-httpd_metrics.c        |  5 ++++
 src/exchange/taler-exchange-httpd_metrics.h        | 28 ++++++++++++++++++++++
 src/exchange/taler-exchange-httpd_recoup.c         |  1 +
 .../taler-exchange-httpd_refreshes_reveal.c        |  3 +++
 src/exchange/taler-exchange-httpd_refund.c         |  1 +
 src/exchange/taler-exchange-httpd_reserves_get.c   |  1 +
 src/exchange/taler-exchange-httpd_transfers_get.c  |  1 +
 src/exchange/taler-exchange-httpd_withdraw.c       |  1 +
 24 files changed, 63 insertions(+), 16 deletions(-)

diff --git a/src/exchange/taler-exchange-httpd_auditors.c 
b/src/exchange/taler-exchange-httpd_auditors.c
index bf4a9b2c..1b8af311 100644
--- a/src/exchange/taler-exchange-httpd_auditors.c
+++ b/src/exchange/taler-exchange-httpd_auditors.c
@@ -216,6 +216,7 @@ TEH_handler_auditors (
     return MHD_YES;   /* failure */
   ret = TEH_DB_run_transaction (connection,
                                 "add auditor denom sig",
+                                TEH_MT_OTHER,
                                 &res,
                                 &add_auditor_denom_sig,
                                 &awc);
diff --git a/src/exchange/taler-exchange-httpd_db.c 
b/src/exchange/taler-exchange-httpd_db.c
index 08b57844..da495517 100644
--- a/src/exchange/taler-exchange-httpd_db.c
+++ b/src/exchange/taler-exchange-httpd_db.c
@@ -24,6 +24,7 @@
 #include <gnunet/gnunet_json_lib.h>
 #include "taler_json_lib.h"
 #include "taler_mhd_lib.h"
+#include "taler-exchange-httpd_db.h"
 #include "taler-exchange-httpd_responses.h"
 
 
@@ -113,25 +114,10 @@ TEH_make_coin_known (const struct TALER_CoinPublicInfo 
*coin,
 }
 
 
-/**
- * Run a database transaction for @a connection.
- * Starts a transaction and calls @a cb.  Upon success,
- * attempts to commit the transaction.  Upon soft failures,
- * retries @a cb a few times.  Upon hard or persistent soft
- * errors, generates an error message for @a connection.
- *
- * @param connection MHD connection to run @a cb for, can be NULL
- * @param name name of the transaction (for debugging)
- * @param[out] mhd_ret set to MHD response code, if transaction failed;
- *             NULL if we are not running with a @a connection and thus
- *             must not queue MHD replies
- * @param cb callback implementing transaction logic
- * @param cb_cls closure for @a cb, must be read-only!
- * @return #GNUNET_OK on success, #GNUNET_SYSERR on failure
- */
 enum GNUNET_GenericReturnValue
 TEH_DB_run_transaction (struct MHD_Connection *connection,
                         const char *name,
+                        enum TEH_MetricType mt,
                         MHD_RESULT *mhd_ret,
                         TEH_DB_TransactionCallback cb,
                         void *cb_cls)
@@ -149,6 +135,8 @@ TEH_DB_run_transaction (struct MHD_Connection *connection,
                                              NULL);
     return GNUNET_SYSERR;
   }
+  GNUNET_assert (mt < TEH_MT_COUNT);
+  TEH_METRICS_num_requests[mt]++;
   for (unsigned int retries = 0;
        retries < MAX_TRANSACTION_COMMIT_RETRIES;
        retries++)
@@ -190,6 +178,7 @@ TEH_DB_run_transaction (struct MHD_Connection *connection,
                     (-1 == (int) *mhd_ret) );
     if (0 <= qs)
       return GNUNET_OK;
+    TEH_METRICS_num_conflict[mt]++;
   }
   TALER_LOG_ERROR ("Transaction `%s' commit failed %u times\n",
                    name,
diff --git a/src/exchange/taler-exchange-httpd_db.h 
b/src/exchange/taler-exchange-httpd_db.h
index c115981d..83302235 100644
--- a/src/exchange/taler-exchange-httpd_db.h
+++ b/src/exchange/taler-exchange-httpd_db.h
@@ -23,6 +23,7 @@
 
 #include <microhttpd.h>
 #include "taler_exchangedb_plugin.h"
+#include "taler-exchange-httpd_metrics.h"
 #include <gnunet/gnunet_mhd_compat.h>
 
 
@@ -69,6 +70,7 @@ typedef enum GNUNET_DB_QueryStatus
  *
  * @param connection MHD connection to run @a cb for, can be NULL
  * @param name name of the transaction (for debugging)
+ * @param mt type of the requests, for metric generation
  * @param[out] mhd_ret set to MHD response code, if transaction failed 
(returned #GNUNET_SYSERR);
  *             NULL if we are not running with a @a connection and thus
  *             must not queue MHD replies
@@ -79,6 +81,7 @@ typedef enum GNUNET_DB_QueryStatus
 enum GNUNET_GenericReturnValue
 TEH_DB_run_transaction (struct MHD_Connection *connection,
                         const char *name,
+                        enum TEH_MetricType mt,
                         MHD_RESULT *mhd_ret,
                         TEH_DB_TransactionCallback cb,
                         void *cb_cls);
diff --git a/src/exchange/taler-exchange-httpd_deposit.c 
b/src/exchange/taler-exchange-httpd_deposit.c
index 6b651f40..5534c402 100644
--- a/src/exchange/taler-exchange-httpd_deposit.c
+++ b/src/exchange/taler-exchange-httpd_deposit.c
@@ -497,6 +497,7 @@ TEH_handler_deposit (struct MHD_Connection *connection,
     if (GNUNET_OK !=
         TEH_DB_run_transaction (connection,
                                 "execute deposit",
+                                TEH_MT_DEPOSIT,
                                 &mhd_ret,
                                 &deposit_transaction,
                                 &dc))
diff --git a/src/exchange/taler-exchange-httpd_deposits_get.c 
b/src/exchange/taler-exchange-httpd_deposits_get.c
index d981a8dd..3db17701 100644
--- a/src/exchange/taler-exchange-httpd_deposits_get.c
+++ b/src/exchange/taler-exchange-httpd_deposits_get.c
@@ -246,6 +246,7 @@ handle_track_transaction_request (
   if (GNUNET_OK !=
       TEH_DB_run_transaction (connection,
                               "handle deposits GET",
+                              TEH_MT_OTHER,
                               &mhd_ret,
                               &deposits_get_transaction,
                               &ctx))
diff --git a/src/exchange/taler-exchange-httpd_kyc-check.c 
b/src/exchange/taler-exchange-httpd_kyc-check.c
index 76d09481..1edbbf2a 100644
--- a/src/exchange/taler-exchange-httpd_kyc-check.c
+++ b/src/exchange/taler-exchange-httpd_kyc-check.c
@@ -351,6 +351,7 @@ TEH_handler_kyc_check (
   (void) GNUNET_TIME_round_abs (&now);
   ret = TEH_DB_run_transaction (rc->connection,
                                 "kyc check",
+                                TEH_MT_OTHER,
                                 &res,
                                 &kyc_check,
                                 kyp);
diff --git a/src/exchange/taler-exchange-httpd_kyc-proof.c 
b/src/exchange/taler-exchange-httpd_kyc-proof.c
index 6bd98abf..24ddfc74 100644
--- a/src/exchange/taler-exchange-httpd_kyc-proof.c
+++ b/src/exchange/taler-exchange-httpd_kyc-proof.c
@@ -678,6 +678,7 @@ TEH_handler_kyc_proof (
 
     ret = TEH_DB_run_transaction (kpc->rc->connection,
                                   "check proof kyc",
+                                  TEH_MT_OTHER,
                                   &res,
                                   &persist_kyc_ok,
                                   kpc);
diff --git a/src/exchange/taler-exchange-httpd_kyc-wallet.c 
b/src/exchange/taler-exchange-httpd_kyc-wallet.c
index 3db174bf..4062f930 100644
--- a/src/exchange/taler-exchange-httpd_kyc-wallet.c
+++ b/src/exchange/taler-exchange-httpd_kyc-wallet.c
@@ -140,6 +140,7 @@ TEH_handler_kyc_wallet (
       0);
   ret = TEH_DB_run_transaction (rc->connection,
                                 "check wallet kyc",
+                                TEH_MT_OTHER,
                                 &res,
                                 &wallet_kyc_check,
                                 &krc);
diff --git a/src/exchange/taler-exchange-httpd_link.c 
b/src/exchange/taler-exchange-httpd_link.c
index 3393e068..d3c0d6a5 100644
--- a/src/exchange/taler-exchange-httpd_link.c
+++ b/src/exchange/taler-exchange-httpd_link.c
@@ -193,6 +193,7 @@ TEH_handler_link (struct TEH_RequestContext *rc,
   if (GNUNET_OK !=
       TEH_DB_run_transaction (rc->connection,
                               "run link",
+                              TEH_MT_OTHER,
                               &mhd_ret,
                               &link_transaction,
                               &ctx))
diff --git a/src/exchange/taler-exchange-httpd_management_auditors.c 
b/src/exchange/taler-exchange-httpd_management_auditors.c
index d782618f..f9092c53 100644
--- a/src/exchange/taler-exchange-httpd_management_auditors.c
+++ b/src/exchange/taler-exchange-httpd_management_auditors.c
@@ -187,6 +187,7 @@ TEH_handler_management_auditors (
 
   ret = TEH_DB_run_transaction (connection,
                                 "add auditor",
+                                TEH_MT_OTHER,
                                 &res,
                                 &add_auditor,
                                 &aac);
diff --git a/src/exchange/taler-exchange-httpd_management_auditors_AP_disable.c 
b/src/exchange/taler-exchange-httpd_management_auditors_AP_disable.c
index 7bf191f4..8b31fb13 100644
--- a/src/exchange/taler-exchange-httpd_management_auditors_AP_disable.c
+++ b/src/exchange/taler-exchange-httpd_management_auditors_AP_disable.c
@@ -176,6 +176,7 @@ TEH_handler_management_auditors_AP_disable (
 
   ret = TEH_DB_run_transaction (connection,
                                 "del auditor",
+                                TEH_MT_OTHER,
                                 &res,
                                 &del_auditor,
                                 &dac);
diff --git a/src/exchange/taler-exchange-httpd_management_post_keys.c 
b/src/exchange/taler-exchange-httpd_management_post_keys.c
index 86b17cb3..ad4cd3c0 100644
--- a/src/exchange/taler-exchange-httpd_management_post_keys.c
+++ b/src/exchange/taler-exchange-httpd_management_post_keys.c
@@ -454,6 +454,7 @@ TEH_handler_management_post_keys (
 
     res = TEH_DB_run_transaction (connection,
                                   "add keys",
+                                  TEH_MT_OTHER,
                                   &ret,
                                   &add_keys,
                                   &akc);
diff --git a/src/exchange/taler-exchange-httpd_management_wire_disable.c 
b/src/exchange/taler-exchange-httpd_management_wire_disable.c
index 17bd7273..2d37a720 100644
--- a/src/exchange/taler-exchange-httpd_management_wire_disable.c
+++ b/src/exchange/taler-exchange-httpd_management_wire_disable.c
@@ -177,6 +177,7 @@ TEH_handler_management_post_wire_disable (
 
     res = TEH_DB_run_transaction (connection,
                                   "del wire",
+                                  TEH_MT_OTHER,
                                   &ret,
                                   &del_wire,
                                   &awc);
diff --git a/src/exchange/taler-exchange-httpd_management_wire_enable.c 
b/src/exchange/taler-exchange-httpd_management_wire_enable.c
index 4bad41b4..165c5183 100644
--- a/src/exchange/taler-exchange-httpd_management_wire_enable.c
+++ b/src/exchange/taler-exchange-httpd_management_wire_enable.c
@@ -212,6 +212,7 @@ TEH_handler_management_post_wire (
 
     res = TEH_DB_run_transaction (connection,
                                   "add wire",
+                                  TEH_MT_OTHER,
                                   &ret,
                                   &add_wire,
                                   &awc);
diff --git a/src/exchange/taler-exchange-httpd_management_wire_fees.c 
b/src/exchange/taler-exchange-httpd_management_wire_fees.c
index 4272a2d0..18014904 100644
--- a/src/exchange/taler-exchange-httpd_management_wire_fees.c
+++ b/src/exchange/taler-exchange-httpd_management_wire_fees.c
@@ -221,6 +221,7 @@ TEH_handler_management_post_wire_fees (
 
     res = TEH_DB_run_transaction (connection,
                                   "add wire fee",
+                                  TEH_MT_OTHER,
                                   &ret,
                                   &add_fee,
                                   &afc);
diff --git a/src/exchange/taler-exchange-httpd_melt.c 
b/src/exchange/taler-exchange-httpd_melt.c
index 3dbff43a..e2e34371 100644
--- a/src/exchange/taler-exchange-httpd_melt.c
+++ b/src/exchange/taler-exchange-httpd_melt.c
@@ -432,6 +432,7 @@ handle_melt (struct MHD_Connection *connection,
     if (GNUNET_OK !=
         TEH_DB_run_transaction (connection,
                                 "run melt",
+                                TEH_MT_MELT,
                                 &mhd_ret,
                                 &melt_transaction,
                                 rmc))
diff --git a/src/exchange/taler-exchange-httpd_metrics.c 
b/src/exchange/taler-exchange-httpd_metrics.c
index 95321092..d3f1f02d 100644
--- a/src/exchange/taler-exchange-httpd_metrics.c
+++ b/src/exchange/taler-exchange-httpd_metrics.c
@@ -29,6 +29,11 @@
 #include <jansson.h>
 
 
+unsigned long long TEH_METRICS_num_requests[TEH_MT_COUNT];
+
+unsigned long long TEH_METRICS_num_conflict[TEH_MT_COUNT];
+
+
 MHD_RESULT
 TEH_handler_metrics (struct TEH_RequestContext *rc,
                      const char *const args[])
diff --git a/src/exchange/taler-exchange-httpd_metrics.h 
b/src/exchange/taler-exchange-httpd_metrics.h
index 399a1767..39e46316 100644
--- a/src/exchange/taler-exchange-httpd_metrics.h
+++ b/src/exchange/taler-exchange-httpd_metrics.h
@@ -26,6 +26,34 @@
 #include "taler-exchange-httpd.h"
 
 
+/**
+ * Request types for which we collect metrics.
+ */
+enum TEH_MetricType
+{
+  TEH_MT_OTHER = 0,
+  TEH_MT_DEPOSIT = 1,
+  TEH_MT_WITHDRAW = 2,
+  TEH_MT_MELT = 3,
+  TEH_MT_REVEAL_PRECHECK = 4,
+  TEH_MT_REVEAL = 5,
+  TEH_MT_REVEAL_PERSIST = 6,
+  TEH_MT_COUNT = 7 /* MUST BE LAST! */
+};
+
+
+/**
+ * Number of requests handled of the respective type.
+ */
+extern unsigned long long TEH_METRICS_num_requests[TEH_MT_COUNT];
+
+/**
+ * Number of serialization errors encountered when
+ * handling requests of the respective type.
+ */
+extern unsigned long long TEH_METRICS_num_conflict[TEH_MT_COUNT];
+
+
 /**
  * Handle a "/metrics" request.
  *
diff --git a/src/exchange/taler-exchange-httpd_recoup.c 
b/src/exchange/taler-exchange-httpd_recoup.c
index b5074ce3..7ea345b8 100644
--- a/src/exchange/taler-exchange-httpd_recoup.c
+++ b/src/exchange/taler-exchange-httpd_recoup.c
@@ -477,6 +477,7 @@ verify_and_execute_recoup (
     if (GNUNET_OK !=
         TEH_DB_run_transaction (connection,
                                 "run recoup",
+                                TEH_MT_OTHER,
                                 &mhd_ret,
                                 &recoup_transaction,
                                 &pc))
diff --git a/src/exchange/taler-exchange-httpd_refreshes_reveal.c 
b/src/exchange/taler-exchange-httpd_refreshes_reveal.c
index 4631a2b9..08587a51 100644
--- a/src/exchange/taler-exchange-httpd_refreshes_reveal.c
+++ b/src/exchange/taler-exchange-httpd_refreshes_reveal.c
@@ -724,6 +724,7 @@ resolve_refreshes_reveal_denominations (struct 
MHD_Connection *connection,
     if ( (GNUNET_OK ==
           TEH_DB_run_transaction (connection,
                                   "reveal pre-check",
+                                  TEH_MT_REVEAL_PRECHECK,
                                   &ret,
                                   &refreshes_reveal_preflight,
                                   rctx)) &&
@@ -745,6 +746,7 @@ resolve_refreshes_reveal_denominations (struct 
MHD_Connection *connection,
     if (GNUNET_OK !=
         TEH_DB_run_transaction (connection,
                                 "run reveal",
+                                TEH_MT_REVEAL,
                                 &ret,
                                 &refreshes_reveal_transaction,
                                 rctx))
@@ -756,6 +758,7 @@ resolve_refreshes_reveal_denominations (struct 
MHD_Connection *connection,
     if (GNUNET_OK ==
         TEH_DB_run_transaction (connection,
                                 "persist reveal",
+                                TEH_MT_REVEAL_PERSIST,
                                 &ret,
                                 &refreshes_reveal_persist,
                                 rctx))
diff --git a/src/exchange/taler-exchange-httpd_refund.c 
b/src/exchange/taler-exchange-httpd_refund.c
index be8a88df..a1ef50a3 100644
--- a/src/exchange/taler-exchange-httpd_refund.c
+++ b/src/exchange/taler-exchange-httpd_refund.c
@@ -447,6 +447,7 @@ verify_and_execute_refund (struct MHD_Connection 
*connection,
     if (GNUNET_OK !=
         TEH_DB_run_transaction (connection,
                                 "run refund",
+                                TEH_MT_OTHER,
                                 &mhd_ret,
                                 &refund_transaction,
                                 (void *) refund))
diff --git a/src/exchange/taler-exchange-httpd_reserves_get.c 
b/src/exchange/taler-exchange-httpd_reserves_get.c
index 3b835421..80c992e6 100644
--- a/src/exchange/taler-exchange-httpd_reserves_get.c
+++ b/src/exchange/taler-exchange-httpd_reserves_get.c
@@ -315,6 +315,7 @@ TEH_handler_reserves_get (struct TEH_RequestContext *rc,
   if (GNUNET_OK !=
       TEH_DB_run_transaction (rc->connection,
                               "get reserve history",
+                              TEH_MT_OTHER,
                               &mhd_ret,
                               &reserve_history_transaction,
                               &rsc))
diff --git a/src/exchange/taler-exchange-httpd_transfers_get.c 
b/src/exchange/taler-exchange-httpd_transfers_get.c
index e63acdc2..38a5c211 100644
--- a/src/exchange/taler-exchange-httpd_transfers_get.c
+++ b/src/exchange/taler-exchange-httpd_transfers_get.c
@@ -515,6 +515,7 @@ TEH_handler_transfers_get (struct TEH_RequestContext *rc,
   if (GNUNET_OK !=
       TEH_DB_run_transaction (rc->connection,
                               "run transfers GET",
+                              TEH_MT_OTHER,
                               &mhd_ret,
                               &get_transfer_deposits,
                               &ctx))
diff --git a/src/exchange/taler-exchange-httpd_withdraw.c 
b/src/exchange/taler-exchange-httpd_withdraw.c
index 8540fca4..9a45271b 100644
--- a/src/exchange/taler-exchange-httpd_withdraw.c
+++ b/src/exchange/taler-exchange-httpd_withdraw.c
@@ -521,6 +521,7 @@ TEH_handler_withdraw (struct TEH_RequestContext *rc,
     if (GNUNET_OK !=
         TEH_DB_run_transaction (rc->connection,
                                 "run withdraw",
+                                TEH_MT_WITHDRAW,
                                 &mhd_ret,
                                 &withdraw_transaction,
                                 &wc))

-- 
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]