Description
Subject of the issue
I am working on a self-contained script through which one can set up a completely new Algorand network with a newly provisioned node hosted on fly.io.
In my code, I have very simple unit tests which show that I can connect to the node, but whenever I want to perform a transaction from one address to another, I get the error "TransactionPool.ingest: no pending block evaluator".
Your environment
A Dockerfile based on algorand/algod:latest
Steps to reproduce
Make sure that you have python3 and the fly CLI installed and you're logged in to your fly.io account. Then:
git clone https://github.com/hermesloom/algorand-node-fly
cd algorand-node-fly
./setup.sh 100 EUR
- Answer
Would you like to copy its configuration to the new app?
withy
- Answer
Do you want to tweak these settings before proceeding?
withn
- Answer
Would you like to allocate dedicated ipv4 and ipv6 addresses now?
withy
- Answer
Expected behaviour
The unit tests in the script local/test.py
in the aforementioned repository should be executed successfully.
Actual behaviour
Unit tests test_04_transfer_funds
and test_05_multiple_accounts
fail with the following errors:
Using app name: algorand-node
Getting IP address for algorand-node...
Using Fly.io app IP address: <redacted>
Using API at: http://<redacted>
Using Genesis address: <redacted>
Waiting for API to be healthy (max 15 attempts)...
✅ API is healthy! (attempt 1/15)
..Genesis account balance: 10000000000000000 picoXDRs
.FF
======================================================================
FAIL: test_04_transfer_funds (__main__.AlgorandAPITest.test_04_transfer_funds)
Test transferring funds from genesis to a new test account.
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/nalenz/Programmierung/algorand-node-fly/local/test.py", line 222, in test_04_transfer_funds
result = self.api_client.transfer(
self.genesis_address,
...<3 lines>...
"Test transfer",
)
File "/Users/nalenz/Programmierung/algorand-node-fly/local/api_client.py", line 70, in transfer
raise Exception(f"Error transferring funds: {response.text}")
Exception: Error transferring funds: {"error":"Failed to transfer funds: TransactionPool.Remember: TransactionPool.ingest: no pending block evaluator"}
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/nalenz/Programmierung/algorand-node-fly/local/test.py", line 260, in test_04_transfer_funds
self.fail(f"Failed to transfer funds and verify: {e}")
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Failed to transfer funds and verify: Error transferring funds: {"error":"Failed to transfer funds: TransactionPool.Remember: TransactionPool.ingest: no pending block evaluator"}
======================================================================
FAIL: test_05_multiple_accounts (__main__.AlgorandAPITest.test_05_multiple_accounts)
Test creating multiple accounts and transferring between them.
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/nalenz/Programmierung/algorand-node-fly/local/test.py", line 270, in test_05_multiple_accounts
fund_result = self.api_client.transfer(
self.genesis_address,
...<3 lines>...
"Fund for multi-account test",
)
File "/Users/nalenz/Programmierung/algorand-node-fly/local/api_client.py", line 70, in transfer
raise Exception(f"Error transferring funds: {response.text}")
Exception: Error transferring funds: {"error":"Failed to transfer funds: TransactionPool.Remember: TransactionPool.ingest: no pending block evaluator"}
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/nalenz/Programmierung/algorand-node-fly/local/test.py", line 312, in test_05_multiple_accounts
self.fail(f"Failed in multiple account test: {e}")
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Failed in multiple account test: Error transferring funds: {"error":"Failed to transfer funds: TransactionPool.Remember: TransactionPool.ingest: no pending block evaluator"}
----------------------------------------------------------------------
Ran 5 tests in 1.604s
FAILED (failures=2)
More specifically, in my server logs I see that the error happens here in algod_client.send_transaction
, but it just says HTTP Error 400: Bad Request
:
[2025-04-15 12:27:22,499] ERROR in server_api: Error transferring funds: TransactionPool.Remember: TransactionPool.ingest: no pending block evaluator
Traceback (most recent call last):
File "/algod/venv/lib/python3.11/site-packages/algosdk/v2client/algod.py", line 106, in algod_request
resp = urlopen(req, timeout=timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/urllib/request.py", line 216, in urlopen
return opener.open(url, data, timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/urllib/request.py", line 525, in open
response = meth(req, response)
^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/urllib/request.py", line 634, in http_response
response = self.parent.error(
^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/urllib/request.py", line 563, in error
return self._call_chain(*args)
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/urllib/request.py", line 496, in _call_chain
result = func(*args)
^^^^^^^^^^^
File "/usr/lib/python3.11/urllib/request.py", line 643, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 400: Bad Request
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/algod/server_api.py", line 590, in transfer_funds
tx_id = algod_client.send_transaction(signed_txn)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/algod/venv/lib/python3.11/site-packages/algosdk/v2client/algod.py", line 336, in send_transaction
return self.send_raw_transaction(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/algod/venv/lib/python3.11/site-packages/algosdk/v2client/algod.py", line 363, in send_raw_transaction
resp = self.algod_request("POST", req, data=txn_bytes, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/algod/venv/lib/python3.11/site-packages/algosdk/v2client/algod.py", line 116, in algod_request
raise error.AlgodHTTPError(m, code, j.get("data"))
algosdk.error.AlgodHTTPError: TransactionPool.Remember: TransactionPool.ingest: no pending block evaluator