protection against recursive action execution from triggers

This commit is contained in:
Radu Ioan Fericean
2014-01-14 17:26:16 +02:00
parent d28815bf0a
commit 4b0ccb7564
2 changed files with 10 additions and 3 deletions

View File

@@ -47,6 +47,8 @@ func (at *ActionTrigger) Execute(ub *UserBalance) (err error) {
Logger.Err(fmt.Sprintf("Failed to get actions: %v", err))
return
}
at.Executed = true
atLeastOneActionExecuted := false
for _, a := range aac {
if a.Balance == nil {
a.Balance = &Balance{}
@@ -59,9 +61,14 @@ func (at *ActionTrigger) Execute(ub *UserBalance) (err error) {
}
go Logger.Info(fmt.Sprintf("Executing %v: %v", ub.Id, a))
err = actionFunction(ub, a)
if err == nil {
atLeastOneActionExecuted = true
}
}
if !atLeastOneActionExecuted {
at.Executed = false
}
storageLogger.LogActionTrigger(ub.Id, RATER_SOURCE, at, aac)
at.Executed = true
accountingStorage.SetUserBalance(ub)
return
}

View File

@@ -115,8 +115,8 @@ func (ub *UserBalance) debitBalanceAction(a *Action) error {
a.Balance.Value = -a.Balance.Value
ub.BalanceMap[id] = append(ub.BalanceMap[id], a.Balance)
}
ub.executeActionTriggers(nil) // for triggering min/max_balance triggers
return nil //ub.BalanceMap[id].GetTotalValue()
ub.executeActionTriggers(nil)
return nil //ub.BalanceMap[id].GetTotalValue()
}
func (ub *UserBalance) getBalancesForPrefix(prefix string, balances BalanceChain) BalanceChain {