fusion44 / blitz_api

A management backend for the RaspiBlitz project written in Python / FastAPI
MIT License
19 stars 18 forks source link

Crash when lightning node is set to none in .env #169

Closed fusion44 closed 1 year ago

fusion44 commented 1 year ago
    Updated to this branch with the latest dev image & restarted.

API failed with the following error:

Nov 28 06:37:22 raspberrypi systemd[1]: Started BlitzBackendAPI.
Nov 28 06:37:25 raspberrypi python[39690]: Traceback (most recent call last):
Nov 28 06:37:25 raspberrypi python[39690]:   File "/usr/lib/python3.9/runpy.py", line 197, in _run_module_as_main
Nov 28 06:37:25 raspberrypi python[39690]:     return _run_code(code, main_globals, None,
Nov 28 06:37:25 raspberrypi python[39690]:   File "/usr/lib/python3.9/runpy.py", line 87, in _run_code
Nov 28 06:37:25 raspberrypi python[39690]:     exec(code, run_globals)
Nov 28 06:37:25 raspberrypi python[39690]:   File "/home/blitzapi/blitz_api/venv/lib/python3.9/site-packages/uvicorn/__main__.py", line 4, in <module>
Nov 28 06:37:25 raspberrypi python[39690]:     uvicorn.main()
Nov 28 06:37:25 raspberrypi python[39690]:   File "/home/blitzapi/blitz_api/venv/lib/python3.9/site-packages/click/core.py", line 1130, in __call__
Nov 28 06:37:25 raspberrypi python[39690]:     return self.main(*args, **kwargs)
Nov 28 06:37:25 raspberrypi python[39690]:   File "/home/blitzapi/blitz_api/venv/lib/python3.9/site-packages/click/core.py", line 1055, in main
Nov 28 06:37:25 raspberrypi python[39690]:     rv = self.invoke(ctx)
Nov 28 06:37:25 raspberrypi python[39690]:   File "/home/blitzapi/blitz_api/venv/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
Nov 28 06:37:25 raspberrypi python[39690]:     return ctx.invoke(self.callback, **ctx.params)
Nov 28 06:37:25 raspberrypi python[39690]:   File "/home/blitzapi/blitz_api/venv/lib/python3.9/site-packages/click/core.py", line 760, in invoke
Nov 28 06:37:25 raspberrypi python[39690]:     return __callback(*args, **kwargs)
Nov 28 06:37:25 raspberrypi python[39690]:   File "/home/blitzapi/blitz_api/venv/lib/python3.9/site-packages/uvicorn/main.py", line 408, in main
Nov 28 06:37:25 raspberrypi python[39690]:     run(
Nov 28 06:37:25 raspberrypi python[39690]:   File "/home/blitzapi/blitz_api/venv/lib/python3.9/site-packages/uvicorn/main.py", line 576, in run
Nov 28 06:37:25 raspberrypi python[39690]:     server.run()
Nov 28 06:37:25 raspberrypi python[39690]:   File "/home/blitzapi/blitz_api/venv/lib/python3.9/site-packages/uvicorn/server.py", line 60, in run
Nov 28 06:37:25 raspberrypi python[39690]:     return asyncio.run(self.serve(sockets=sockets))
Nov 28 06:37:25 raspberrypi python[39690]:   File "/usr/lib/python3.9/asyncio/runners.py", line 44, in run
Nov 28 06:37:25 raspberrypi python[39690]:     return loop.run_until_complete(main)
Nov 28 06:37:25 raspberrypi python[39690]:   File "/usr/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
Nov 28 06:37:25 raspberrypi python[39690]:     return future.result()
Nov 28 06:37:25 raspberrypi python[39690]:   File "/home/blitzapi/blitz_api/venv/lib/python3.9/site-packages/uvicorn/server.py", line 67, in serve
Nov 28 06:37:25 raspberrypi python[39690]:     config.load()
Nov 28 06:37:25 raspberrypi python[39690]:   File "/home/blitzapi/blitz_api/venv/lib/python3.9/site-packages/uvicorn/config.py", line 479, in load
Nov 28 06:37:25 raspberrypi python[39690]:     self.loaded_app = import_from_string(self.app)
Nov 28 06:37:25 raspberrypi python[39690]:   File "/home/blitzapi/blitz_api/venv/lib/python3.9/site-packages/uvicorn/importer.py", line 21, in import_from_string
Nov 28 06:37:25 raspberrypi python[39690]:     module = importlib.import_module(module_str)
Nov 28 06:37:25 raspberrypi python[39690]:   File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module
Nov 28 06:37:25 raspberrypi python[39690]:     return _bootstrap._gcd_import(name[level:], package, level)
Nov 28 06:37:25 raspberrypi python[39690]:   File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
Nov 28 06:37:25 raspberrypi python[39690]:   File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
Nov 28 06:37:25 raspberrypi python[39690]:   File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
Nov 28 06:37:25 raspberrypi python[39690]:   File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
Nov 28 06:37:25 raspberrypi python[39690]:   File "<frozen importlib._bootstrap_external>", line 790, in exec_module
Nov 28 06:37:25 raspberrypi python[39690]:   File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
Nov 28 06:37:25 raspberrypi python[39690]:   File "./app/main.py", line 20, in <module>
Nov 28 06:37:25 raspberrypi python[39690]:     from app.api.warmup import (
Nov 28 06:37:25 raspberrypi python[39690]:   File "./app/api/warmup.py", line 6, in <module>
Nov 28 06:37:25 raspberrypi python[39690]:     from app.lightning.service import (
Nov 28 06:37:25 raspberrypi python[39690]:   File "./app/lightning/service.py", line 59, in <module>
Nov 28 06:37:25 raspberrypi python[39690]:     ln = LnNode()
Nov 28 06:37:25 raspberrypi python[39690]: NameError: name 'LnNode' is not defined

_Originally posted by @cstenglein in https://github.com/fusion44/blitz_api/issues/149#issuecomment-1328610770_

code: https://github.com/fusion44/blitz_api/blob/5edb60ad8244e24a10241f1c06bc29f2456f6947/app/lightning/service.py#L29:L44

fusion44 commented 1 year ago

Updated to this branch with the latest dev image & restarted.

API failed with the following error:

...

What is the ln_node setting set to in your .env? This crash should only happen if it is set to none or is missing completely. One additional possibility is that it doesn't load correctly.

Can you check the logs if any of the following strings appear in the logs:

elif ln_node == "none":
    logging.info(f"lightning was explicitly turned off")
elif ln_node == "":
    logging.info(f"lightning is not set yet")
else:
    logging.error(f"unknown lightning node: {ln_node}")
cstenglein commented 1 year ago

Just a note:

This happens when I was using a new image on an existing node, so I was trying to do a recovery.

cstenglein commented 1 year ago

.envfile has no value currently:

# lnd_grpc, cln_grpc, none
# Please refer to the documentation for the install procedure
# for each implementation.
ln_node=

Reason is it's still in setup:

https://github.com/rootzoll/raspiblitz/blob/v1.8/home.admin/config.scripts/blitz.web.api.sh#L127

fusion44 commented 1 year ago

@rootzoll should I treat ln_node=none and ln_node= the same? At the moment I treat ln_node= as an error as it is undefined. It should not end in a crash though ...

rootzoll commented 1 year ago

Yes, when the value is not set it should default to ln_node=none.