diff --git a/node/gpu_render_endpoints.py b/node/gpu_render_endpoints.py index 61fb39fae..65e65562d 100644 --- a/node/gpu_render_endpoints.py +++ b/node/gpu_render_endpoints.py @@ -225,10 +225,19 @@ def gpu_release(): db.rollback() return jsonify({"error": "Job was already processed"}), 409 - # Transfer to provider - db.execute("UPDATE balances SET balance_rtc = balance_rtc + ? WHERE miner_pk = ?", (job["amount_rtc"], job["to_wallet"])) - db.commit() - return jsonify({"ok": True, "status": "released"}) + # Transfer to provider — verify the provider has a balances row + credited = db.execute( + "UPDATE balances SET balance_rtc = balance_rtc + ? WHERE miner_pk = ?", + (job["amount_rtc"], job["to_wallet"]), + ) + if credited.rowcount != 1: + # Provider has no balances row — create one before crediting + db.execute( + "INSERT INTO balances (miner_pk, balance_rtc) VALUES (?, ?)", + (job["to_wallet"], job["amount_rtc"]), + ) + db.commit() + return jsonify({"ok": True, "status": "released"}) except sqlite3.Error as e: return jsonify({"error": str(e)}), 500 finally: