Fixed billing fees unreachable error propagation. Added USDT ledger creation. Fixed ledger boundaries operation types
This commit is contained in:
@@ -7,6 +7,40 @@ import (
|
||||
"github.com/prometheus/client_golang/prometheus/promauto"
|
||||
)
|
||||
|
||||
type journalEntryType string
|
||||
|
||||
const (
|
||||
journalEntryTypeCredit journalEntryType = "credit"
|
||||
journalEntryTypeDebit journalEntryType = "debit"
|
||||
journalEntryTypeTransfer journalEntryType = "transfer"
|
||||
journalEntryTypeFX journalEntryType = "fx"
|
||||
)
|
||||
|
||||
type journalEntryStatus string
|
||||
|
||||
const (
|
||||
journalEntryStatusAttempted journalEntryStatus = "attempted"
|
||||
journalEntryStatusSuccess journalEntryStatus = "success"
|
||||
journalEntryStatusError journalEntryStatus = "error"
|
||||
)
|
||||
|
||||
type journalEntryErrorType string
|
||||
|
||||
const (
|
||||
journalEntryErrorNotImplemented journalEntryErrorType = "not_implemented"
|
||||
journalEntryErrorFailed journalEntryErrorType = "failed"
|
||||
journalEntryErrorIdempotencyCheck journalEntryErrorType = "idempotency_check_failed"
|
||||
journalEntryErrorAccountResolve journalEntryErrorType = "account_resolve_failed"
|
||||
journalEntryErrorAccountInvalid journalEntryErrorType = "account_invalid"
|
||||
journalEntryErrorContraResolve journalEntryErrorType = "contra_resolve_failed"
|
||||
journalEntryErrorContraMissingID journalEntryErrorType = "contra_missing_id"
|
||||
journalEntryErrorSystemAccountResolve journalEntryErrorType = "system_account_resolve_failed"
|
||||
journalEntryErrorSystemAccountInvalid journalEntryErrorType = "system_account_invalid"
|
||||
journalEntryErrorSystemAccountMissing journalEntryErrorType = "system_account_missing_id"
|
||||
journalEntryErrorUnbalancedAfterContra journalEntryErrorType = "unbalanced_after_contra"
|
||||
journalEntryErrorTransactionFailed journalEntryErrorType = "transaction_failed"
|
||||
)
|
||||
|
||||
var (
|
||||
metricsOnce sync.Once
|
||||
|
||||
@@ -110,16 +144,16 @@ func initMetrics() {
|
||||
|
||||
// Metric recording helpers
|
||||
|
||||
func recordJournalEntry(entryType, status string, durationSeconds float64) {
|
||||
func recordJournalEntry(entryType journalEntryType, status journalEntryStatus, durationSeconds float64) {
|
||||
initMetrics()
|
||||
journalEntriesTotal.WithLabelValues(entryType, status).Inc()
|
||||
journalEntryLatency.WithLabelValues(entryType).Observe(durationSeconds)
|
||||
journalEntriesTotal.WithLabelValues(string(entryType), string(status)).Inc()
|
||||
journalEntryLatency.WithLabelValues(string(entryType)).Observe(durationSeconds)
|
||||
}
|
||||
|
||||
func recordJournalEntryError(entryType, errorType string) {
|
||||
func recordJournalEntryError(entryType journalEntryType, errorType journalEntryErrorType) {
|
||||
initMetrics()
|
||||
journalEntryErrors.WithLabelValues(entryType, errorType).Inc()
|
||||
journalEntriesTotal.WithLabelValues(entryType, "error").Inc()
|
||||
journalEntryErrors.WithLabelValues(string(entryType), string(errorType)).Inc()
|
||||
journalEntriesTotal.WithLabelValues(string(entryType), string(journalEntryStatusError)).Inc()
|
||||
}
|
||||
|
||||
func recordBalanceQuery(status string, durationSeconds float64) {
|
||||
@@ -128,9 +162,9 @@ func recordBalanceQuery(status string, durationSeconds float64) {
|
||||
balanceQueryLatency.WithLabelValues(status).Observe(durationSeconds)
|
||||
}
|
||||
|
||||
func recordTransactionAmount(currency, entryType string, amount float64) {
|
||||
func recordTransactionAmount(currency string, entryType journalEntryType, amount float64) {
|
||||
initMetrics()
|
||||
transactionAmounts.WithLabelValues(currency, entryType).Observe(amount)
|
||||
transactionAmounts.WithLabelValues(currency, string(entryType)).Observe(amount)
|
||||
}
|
||||
|
||||
func recordAccountOperation(operation, status string) {
|
||||
@@ -138,7 +172,7 @@ func recordAccountOperation(operation, status string) {
|
||||
accountOperationsTotal.WithLabelValues(operation, status).Inc()
|
||||
}
|
||||
|
||||
func recordDuplicateRequest(entryType string) {
|
||||
func recordDuplicateRequest(entryType journalEntryType) {
|
||||
initMetrics()
|
||||
duplicateRequestsTotal.WithLabelValues(entryType).Inc()
|
||||
duplicateRequestsTotal.WithLabelValues(string(entryType)).Inc()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user