commit 187b16bfeb3554225d525bc9d7bf384134596072
parent 3cd5faf1ed94005524792c3b3ef45956f3f75c1f
Author: Joel-Haeberli <haebu@rubigen.ch>
Date: Mon, 3 Jun 2024 19:21:51 +0200
fix: enhance logging
Diffstat:
2 files changed, 88 insertions(+), 79 deletions(-)
diff --git a/c2ec/db-postgres.go b/c2ec/db-postgres.go
@@ -575,6 +575,7 @@ func (db *C2ECPostgres) GetProviderByTerminal(terminalId int) (*Provider, error)
PS_GET_PROVIDER_BY_TERMINAL,
terminalId,
); err != nil {
+ LogWarn("postgres", "failed query="+PS_GET_PROVIDER_BY_TERMINAL)
LogError("postgres", err)
if row != nil {
row.Close()
@@ -602,6 +603,7 @@ func (db *C2ECPostgres) GetTerminalProviderByName(name string) (*Provider, error
PS_GET_PROVIDER_BY_NAME,
name,
); err != nil {
+ LogWarn("postgres", "failed query="+PS_GET_PROVIDER_BY_NAME)
LogError("postgres", err)
if row != nil {
row.Close()
@@ -613,6 +615,7 @@ func (db *C2ECPostgres) GetTerminalProviderByName(name string) (*Provider, error
provider, err := pgx.CollectExactlyOneRow(row, pgx.RowToAddrOfStructByName[Provider])
if err != nil {
+ LogWarn("postgres", "failed query="+PS_GET_PROVIDER_BY_NAME)
LogError("postgres", err)
return nil, err
}
@@ -625,12 +628,12 @@ func (db *C2ECPostgres) GetTerminalProviderByName(name string) (*Provider, error
func (db *C2ECPostgres) GetTerminalProviderByPaytoTargetType(paytoTargetType string) (*Provider, error) {
LogInfo("postgres", "loading provider for payto-target-type="+paytoTargetType)
-
if row, err := db.pool.Query(
db.ctx,
PS_GET_PROVIDER_BY_PAYTO_TARGET_TYPE,
paytoTargetType,
); err != nil {
+ LogWarn("postgres", "failed query="+PS_GET_PROVIDER_BY_PAYTO_TARGET_TYPE)
LogError("postgres", err)
if row != nil {
row.Close()
@@ -642,6 +645,7 @@ func (db *C2ECPostgres) GetTerminalProviderByPaytoTargetType(paytoTargetType str
provider, err := pgx.CollectExactlyOneRow(row, pgx.RowToAddrOfStructByName[Provider])
if err != nil {
+ LogWarn("postgres", "failed query="+PS_GET_PROVIDER_BY_PAYTO_TARGET_TYPE)
LogError("postgres", err)
return nil, err
}
@@ -658,6 +662,7 @@ func (db *C2ECPostgres) GetTerminalById(id int) (*Terminal, error) {
PS_GET_TERMINAL_BY_ID,
id,
); err != nil {
+ LogWarn("postgres", "failed query="+PS_GET_TERMINAL_BY_ID)
LogError("postgres", err)
if row != nil {
row.Close()
@@ -669,6 +674,7 @@ func (db *C2ECPostgres) GetTerminalById(id int) (*Terminal, error) {
terminal, err := pgx.CollectExactlyOneRow(row, pgx.RowToAddrOfStructByName[Terminal])
if err != nil {
+ LogWarn("postgres", "failed query="+PS_GET_TERMINAL_BY_ID)
LogError("postgres", err)
return nil, err
}
@@ -685,7 +691,7 @@ func (db *C2ECPostgres) GetTransferById(requestUid []byte) (*Transfer, error) {
PS_GET_TRANSFER_BY_ID,
requestUid,
); err != nil {
- LogWarn("postgres", "error from query execution")
+ LogWarn("postgres", "failed query="+PS_GET_TRANSFER_BY_ID)
LogError("postgres", err)
if rows != nil {
rows.Close()
@@ -735,7 +741,7 @@ func (db *C2ECPostgres) AddTransfer(
ts.Unix(),
)
if err != nil {
- LogInfo("postgres", "query="+PS_ADD_TRANSFER)
+ LogInfo("postgres", "failed query="+PS_ADD_TRANSFER)
LogError("postgres", err)
return err
}
@@ -759,7 +765,7 @@ func (db *C2ECPostgres) UpdateTransfer(
requestUid,
)
if err != nil {
- LogInfo("postgres", "query="+PS_UPDATE_TRANSFER)
+ LogInfo("postgres", "failed query="+PS_UPDATE_TRANSFER)
LogError("postgres", err)
return err
}
@@ -811,8 +817,8 @@ func (db *C2ECPostgres) GetTransfers(start int, delta int, since time.Time) ([]*
)
}
- LogInfo("postgres", "query="+query)
if err != nil {
+ LogWarn("postgres", "failed query="+query)
LogError("postgres", err)
if row != nil {
row.Close()
@@ -824,6 +830,7 @@ func (db *C2ECPostgres) GetTransfers(start int, delta int, since time.Time) ([]*
transfers, err := pgx.CollectRows(row, pgx.RowToAddrOfStructByName[Transfer])
if err != nil {
+ LogWarn("postgres", "failed query="+query)
LogError("postgres", err)
return nil, err
}
@@ -850,6 +857,7 @@ func (db *C2ECPostgres) GetTransfersByState(status int) ([]*Transfer, error) {
transfers, err := pgx.CollectRows(rows, pgx.RowToAddrOfStructByName[Transfer])
if err != nil {
+ LogWarn("postgres", "failed query="+PS_GET_TRANSFERS_BY_STATUS)
LogError("postgres", err)
return nil, err
}
diff --git a/c2ec/proc-transfer.go b/c2ec/proc-transfer.go
@@ -2,7 +2,6 @@ package main
import (
"context"
- "encoding/base64"
"errors"
"fmt"
"time"
@@ -50,78 +49,78 @@ func RunTransferrer(
}()
}
-func transferCallback(notification *Notification, errs chan error) {
-
- LogInfo("proc-transfer", fmt.Sprintf("retrieved information on channel=%s with payload=%s", notification.Channel, notification.Payload))
-
- transferRequestUidBase64 := notification.Payload
- if transferRequestUidBase64 == "" {
- errs <- errors.New("the transfer to refund is not specified")
- return
- }
-
- transferRequestUid, err := base64.StdEncoding.DecodeString(transferRequestUidBase64)
- if err != nil {
- errs <- errors.New("malformed transfer request uid: " + err.Error())
- return
- }
-
- transfer, err := DB.GetTransferById(transferRequestUid)
- if err != nil {
- LogWarn("proc-transfer", "unable to retrieve transfer with requestUid")
- LogError("proc-transfer", err)
- transferFailed(transfer, errs)
- errs <- err
- return
- }
-
- if transfer == nil {
- err := errors.New("expected an existing transfer. very strange")
- LogError("proc-transfer", err)
- transferFailed(transfer, errs)
- errs <- err
- return
- }
-
- paytoTargetType, tid, err := ParsePaytoUri(transfer.CreditAccount)
- LogInfo("proc-transfer", "parsed payto-target-type="+paytoTargetType)
- if err != nil {
- LogWarn("proc-transfer", "unable to parse payto-uri="+transfer.CreditAccount)
- errs <- errors.New("malformed transfer request uid: " + err.Error())
- transferFailed(transfer, errs)
- return
- }
-
- provider, err := DB.GetTerminalProviderByPaytoTargetType(paytoTargetType)
- if err != nil {
- LogWarn("proc-transfer", "unable to find provider for provider-target-type="+paytoTargetType)
- LogError("proc-transfer", err)
- transferFailed(transfer, errs)
- errs <- err
- }
-
- client := PROVIDER_CLIENTS[provider.Name]
- if client == nil {
- errs <- errors.New("no provider client registered for provider " + provider.Name)
- }
-
- err = client.Refund(tid)
- if err != nil {
- LogError("proc-transfer", err)
- transferFailed(transfer, errs)
- return
- }
-
- err = DB.UpdateTransfer(
- transfer.RequestUid,
- time.Now().Unix(),
- TRANSFER_STATUS_SUCCESS, // success
- transfer.Retries,
- )
- if err != nil {
- errs <- err
- }
-}
+// func transferCallback(notification *Notification, errs chan error) {
+
+// LogInfo("proc-transfer", fmt.Sprintf("retrieved information on channel=%s with payload=%s", notification.Channel, notification.Payload))
+
+// transferRequestUidBase64 := notification.Payload
+// if transferRequestUidBase64 == "" {
+// errs <- errors.New("the transfer to refund is not specified")
+// return
+// }
+
+// transferRequestUid, err := base64.StdEncoding.DecodeString(transferRequestUidBase64)
+// if err != nil {
+// errs <- errors.New("malformed transfer request uid: " + err.Error())
+// return
+// }
+
+// transfer, err := DB.GetTransferById(transferRequestUid)
+// if err != nil {
+// LogWarn("proc-transfer", "unable to retrieve transfer with requestUid")
+// LogError("proc-transfer", err)
+// transferFailed(transfer, errs)
+// errs <- err
+// return
+// }
+
+// if transfer == nil {
+// err := errors.New("expected an existing transfer. very strange")
+// LogError("proc-transfer", err)
+// transferFailed(transfer, errs)
+// errs <- err
+// return
+// }
+
+// paytoTargetType, tid, err := ParsePaytoUri(transfer.CreditAccount)
+// LogInfo("proc-transfer", "parsed payto-target-type="+paytoTargetType)
+// if err != nil {
+// LogWarn("proc-transfer", "unable to parse payto-uri="+transfer.CreditAccount)
+// errs <- errors.New("malformed transfer request uid: " + err.Error())
+// transferFailed(transfer, errs)
+// return
+// }
+
+// provider, err := DB.GetTerminalProviderByPaytoTargetType(paytoTargetType)
+// if err != nil {
+// LogWarn("proc-transfer", "unable to find provider for provider-target-type="+paytoTargetType)
+// LogError("proc-transfer", err)
+// transferFailed(transfer, errs)
+// errs <- err
+// }
+
+// client := PROVIDER_CLIENTS[provider.Name]
+// if client == nil {
+// errs <- errors.New("no provider client registered for provider " + provider.Name)
+// }
+
+// err = client.Refund(tid)
+// if err != nil {
+// LogError("proc-transfer", err)
+// transferFailed(transfer, errs)
+// return
+// }
+
+// err = DB.UpdateTransfer(
+// transfer.RequestUid,
+// time.Now().Unix(),
+// TRANSFER_STATUS_SUCCESS, // success
+// transfer.Retries,
+// )
+// if err != nil {
+// errs <- err
+// }
+// }
func executePendingTransfers(errs chan error, lastlog time.Time) {
@@ -139,7 +138,9 @@ func executePendingTransfers(errs chan error, lastlog time.Time) {
shouldRetry := ShouldStartRetry(time.Unix(t.TransferTs, 0), int(t.Retries), MAX_TRANSFER_BACKOFF_MS)
if !shouldRetry {
- LogInfo("proc-transfer", fmt.Sprintf("not retrying transfer %d, because backoff not yet exceeded", t.RowId))
+ if lastlog.Before(time.Now().Add(time.Second * -30)) {
+ LogInfo("proc-transfer", fmt.Sprintf("not retrying transfer id=%d, because backoff not yet exceeded", t.RowId))
+ }
continue
}