Skip to content

Commit ef49bf3

Browse files
fix bug
1 parent bba85b1 commit ef49bf3

File tree

2 files changed

+26
-15
lines changed

2 files changed

+26
-15
lines changed

services/resource-usage-tracker/src/simcore_service_resource_usage_tracker/services/modules/db/credit_transactions_db.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -187,27 +187,31 @@ async def sum_wallet_credits(
187187
*,
188188
product_name: ProductName,
189189
wallet_id: WalletID,
190+
include_pending_transactions: bool = True,
190191
) -> WalletTotalCredits:
191192
async with transaction_context(engine, connection) as conn:
193+
statuses = [
194+
CreditTransactionStatus.BILLED,
195+
CreditTransactionStatus.IN_DEBT,
196+
]
197+
if include_pending_transactions:
198+
statuses.append(CreditTransactionStatus.PENDING)
192199
sum_stmt = sa.select(
193200
sa.func.sum(resource_tracker_credit_transactions.c.osparc_credits)
194201
).where(
195202
(resource_tracker_credit_transactions.c.product_name == product_name)
196203
& (resource_tracker_credit_transactions.c.wallet_id == wallet_id)
197-
& (
198-
resource_tracker_credit_transactions.c.transaction_status.in_(
199-
[
200-
CreditTransactionStatus.BILLED,
201-
CreditTransactionStatus.PENDING,
202-
CreditTransactionStatus.IN_DEBT,
203-
]
204-
)
205-
)
204+
& (resource_tracker_credit_transactions.c.transaction_status.in_(statuses))
206205
)
207206

208207
result = await conn.execute(sum_stmt)
209208
row = result.first()
210209
if row is None or row[0] is None:
210+
_logger.warning(
211+
"No credits found for wallet %s with product %s",
212+
wallet_id,
213+
product_name,
214+
)
211215
return WalletTotalCredits(
212216
wallet_id=wallet_id, available_osparc_credits=Decimal(0)
213217
)

services/resource-usage-tracker/src/simcore_service_resource_usage_tracker/services/process_message_running_service.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -295,17 +295,24 @@ async def _process_stop_event(
295295
msg.created_at,
296296
running_service.pricing_unit_cost,
297297
)
298-
299-
wallet_total_credits = await credit_transactions_db.sum_wallet_credits(
300-
db_engine,
301-
product_name=running_service.product_name,
302-
wallet_id=running_service.wallet_id,
298+
# NOTE: Include_pending_transactions=False will ensure that we do not count the current running transactions.
299+
# This is important because we are closing the transaction now and we do not want to count it again.
300+
wallet_total_credits_without_pending_transactions = (
301+
await credit_transactions_db.sum_wallet_credits(
302+
db_engine,
303+
product_name=running_service.product_name,
304+
wallet_id=running_service.wallet_id,
305+
include_pending_transactions=False,
306+
)
303307
)
304308
_transaction_status = (
305309
CreditTransactionStatus.BILLED
306-
if wallet_total_credits.available_osparc_credits - computed_credits >= 0
310+
if wallet_total_credits_without_pending_transactions.available_osparc_credits
311+
- computed_credits
312+
>= 0
307313
else CreditTransactionStatus.IN_DEBT
308314
)
315+
309316
# Adjust the status if the platform status is not OK
310317
if msg.simcore_platform_status != SimcorePlatformStatus.OK:
311318
_transaction_status = CreditTransactionStatus.NOT_BILLED

0 commit comments

Comments
 (0)