tezos-reward-distributor-organization / tezos-reward-distributor

Tezos Reward Distributor (TRD): A reward distribution software for tezos bakers.
https://tezos-reward-distributor-organization.github.io/tezos-reward-distributor/
GNU General Public License v3.0
87 stars 51 forks source link

-M 4 seems to be broken, wrong status for backtracked transactions and ctez vaults are no longer avoided #684

Open dansan566 opened 11 months ago

dansan566 commented 11 months ago

Describe the bug In cycle 646, we had a backtracked batch. The status of all of those transactions was "paid". The backtracked batch was caused by this vault. The vault does not allow our payment address to deposit. We already had this issue but solved it in TRD once vaults (Kolibri and ctez) were introduced. TRD did just not process transactions when there was no default entry point or the vault was liquidated. TRD also gave a warning in the output and marked the transaction as failed in the report. This is no longer the case and this is why the entire batch failed.

We also tried to fix the backtracked batch by setting the status from "paid" to "failed" and moving the file to reports/failed. Then we used the M -4 (retry failed) functionality. However, TRD gave the following error message:

Exception in thread producer:
Traceback (most recent call last):
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/threading.py", line 973, in _bootstrap_inner
    self.run()
  File "/Users/tezos-reward-distributor/src/pay/payment_producer.py", line 178, in run
    self.retry_producer.retry_failed_payments()
  File "/Users/tezos-reward-distributor/src/pay/retry_producer.py", line 75, in retry_failed_payments
    batch = CsvPaymentFileParser().parse(payment_failed_report_file, cycle)
  File "/Users/tezos-reward-distributor/src/util/csv_payment_file_parser.py", line 19, in parse
    records = [self.from_payment_csv_dict_row(row, cycle) for row in dict_rows]
  File "/Users/tezos-reward-distributor/src/util/csv_payment_file_parser.py", line 19, in <listcomp>
    records = [self.from_payment_csv_dict_row(row, cycle) for row in dict_rows]
  File "/Users/tezos-reward-distributor/src/util/csv_payment_file_parser.py", line 25, in from_payment_csv_dict_row
    reward_log = RewardLog(row["address"], row["type"], 0, 0)
KeyError: 'address'

We also tried "fail" and "0" (was zero some time ago) in the csv file with the same result as above.

To Reproduce Steps to reproduce the behavior:

  1. Create a ctez vault and delegate it
  2. Don't allow the payout address to deposit
  3. Try to send the payout
  4. See the backtracked transaction on tzkt
  5. Set status for the specific cycle from "paid" to "failed" in reports/bakeraddress/payments/done and move it to reports/bakeraddress/payments/failed
  6. Use the -M 4 function (works also in dry run so you need to copy it to simulations/bakeraddress/payments/failed).

Expected behavior We would expect that

  1. TRD does avoid the transaction
  2. TRD gives a warning message in the output and marks the transaction as failed. Funnily, the description does still work "Investigate on https://tzkt.io - Liquidates oven ..."
  3. M -4 works again

Environment