[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-merchant] branch master updated: fix #7025 (presumably)
From: |
gnunet |
Subject: |
[taler-merchant] branch master updated: fix #7025 (presumably) |
Date: |
Wed, 01 Dec 2021 20:03:27 +0100 |
This is an automated email from the git hooks/post-receive script.
grothoff pushed a commit to branch master
in repository merchant.
The following commit(s) were added to refs/heads/master by this push:
new 37ca8796 fix #7025 (presumably)
37ca8796 is described below
commit 37ca87961624a84337c3980b725cc4ebb63745eb
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Wed Dec 1 20:03:25 2021 +0100
fix #7025 (presumably)
---
.../taler-merchant-httpd_private-get-orders.c | 18 ++++++++++++++++--
src/backenddb/merchant-0001.sql | 7 +++++++
src/backenddb/plugin_merchantdb_postgres.c | 20 ++++++++++++++++++--
3 files changed, 41 insertions(+), 4 deletions(-)
diff --git a/src/backend/taler-merchant-httpd_private-get-orders.c
b/src/backend/taler-merchant-httpd_private-get-orders.c
index 85660812..9546ae06 100644
--- a/src/backend/taler-merchant-httpd_private-get-orders.c
+++ b/src/backend/taler-merchant-httpd_private-get-orders.c
@@ -273,7 +273,7 @@ add_order (void *cls,
struct GNUNET_TIME_Absolute creation_time)
{
struct TMH_PendingOrder *po = cls;
- json_t *contract_terms;
+ json_t *contract_terms = NULL;
struct TALER_PrivateContractHash h_contract_terms;
enum GNUNET_DB_QueryStatus qs;
const char *summary;
@@ -282,6 +282,10 @@ add_order (void *cls,
bool paid;
struct TALER_Amount order_amount;
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Adding order `%s' (%llu) to result set\n",
+ orig_order_id,
+ (unsigned long long) order_serial);
qs = TMH_db->lookup_order_status_by_serial (TMH_db->cls,
po->instance_id,
order_serial,
@@ -319,6 +323,7 @@ add_order (void *cls,
&contract_terms,
&os,
NULL);
+ GNUNET_break (os == order_serial);
}
if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS == qs)
{
@@ -332,9 +337,18 @@ add_order (void *cls,
&unused,
&contract_terms);
}
+ if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS == qs)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "Order %llu disappeared during iteration. Skipping.\n",
+ (unsigned long long) order_serial);
+ json_decref (contract_terms); /* should still be NULL */
+ GNUNET_free (order_id);
+ return;
+ }
if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != qs)
{
- GNUNET_break (0); /* Failed: #7025 */
+ GNUNET_break (0);
po->result = TALER_EC_GENERIC_DB_FETCH_FAILED;
json_decref (contract_terms);
GNUNET_free (order_id);
diff --git a/src/backenddb/merchant-0001.sql b/src/backenddb/merchant-0001.sql
index a4058a8a..aaee8998 100644
--- a/src/backenddb/merchant-0001.sql
+++ b/src/backenddb/merchant-0001.sql
@@ -273,6 +273,13 @@ COMMENT ON COLUMN merchant_contract_terms.pay_deadline
CREATE INDEX IF NOT EXISTS merchant_contract_terms_by_merchant_and_expiration
ON merchant_contract_terms
(merchant_serial,pay_deadline);
+COMMENT ON INDEX merchant_contract_terms_by_merchant_and_expiration
+ IS 'for delete_contract_terms';
+CREATE INDEX IF NOT EXISTS merchant_contract_terms_by_expiration
+ ON merchant_contract_terms
+ (paid,pay_deadline);
+COMMENT ON INDEX merchant_contract_terms_by_expiration
+ IS 'for unlock_contracts';
CREATE INDEX IF NOT EXISTS merchant_contract_terms_by_merchant_and_payment
ON merchant_contract_terms
(merchant_serial,paid);
diff --git a/src/backenddb/plugin_merchantdb_postgres.c
b/src/backenddb/plugin_merchantdb_postgres.c
index 4f4966f6..7bdbaf63 100644
--- a/src/backenddb/plugin_merchantdb_postgres.c
+++ b/src/backenddb/plugin_merchantdb_postgres.c
@@ -1557,6 +1557,7 @@ postgres_expire_locks (void *cls)
};
enum GNUNET_DB_QueryStatus qs1;
enum GNUNET_DB_QueryStatus qs2;
+ enum GNUNET_DB_QueryStatus qs3;
check_connection (pg);
qs1 = GNUNET_PQ_eval_prepared_non_select (pg->conn,
@@ -1575,10 +1576,19 @@ postgres_expire_locks (void *cls)
GNUNET_break (0);
return;
}
+ qs3 = GNUNET_PQ_eval_prepared_non_select (pg->conn,
+ "unlock_contracts",
+ params);
+ if (qs3 < 0)
+ {
+ GNUNET_break (0);
+ return;
+ }
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Released %d+%d locks\n",
+ "Released %d+%d+%d locks\n",
qs1,
- qs2);
+ qs2,
+ qs3);
}
@@ -7090,6 +7100,12 @@ postgres_connect (void *cls)
"DELETE FROM merchant_orders"
" WHERE pay_deadline < $1",
1),
+ /* for postgres_expire_locks() */
+ GNUNET_PQ_make_prepare ("unlock_contracts",
+ "DELETE FROM merchant_contract_terms"
+ " WHERE NOT paid"
+ " AND pay_deadline < $1",
+ 1),
/* for postgres_delete_order() */
GNUNET_PQ_make_prepare ("delete_order",
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-merchant] branch master updated: fix #7025 (presumably),
gnunet <=