Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] - POSTGRES_URL_OVERRIDE requires an unnecessary : in the URI #3573

Open
5 of 6 tasks
anoadragon453 opened this issue May 7, 2024 · 1 comment
Open
5 of 6 tasks
Labels
bug: confirmed bug Something isn't working

Comments

@anoadragon453
Copy link

First Check

  • This is not a feature request.
  • I added a very descriptive title to this issue (title field is above this).
  • I used the GitHub search to find a similar issue and didn't find it.
  • I searched the Mealie documentation, with the integrated search.
  • I already read the docs and didn't find an answer.
  • This issue can be replicated on the demo site (https://demo.mealie.io/).

What is the issue you are experiencing?

The new POSTGRES_URL_OVERRIDE environment variable requires that a colon must be present to separate the postgres database username and password fields:

remainder = remainder.split(":", 1)[1]
password = remainder[: remainder.rfind("@")]
quoted_password = urlparse.quote(password)

However, if one is not using a password to connect to their postgres database (for instance, if they are using peer authentication), then they should be able to omit the password and the colon altogether. See this portion of the libpq documentation:

postgresql://[userspec@][hostspec][/dbname][?paramspec]

where userspec is:

user[:password]

In my case, I set my connection string to the following in order to get mealie to connect to my database:

POSTGRES_URL_OVERRIDE="postgresql://mealie:@/mealie?host=/run/postgresql";

Yet it should be possible to provide the following instead:

POSTGRES_URL_OVERRIDE="postgresql://mealie@/mealie?host=/run/postgresql";

note the lack of : between postgresql://mealie and @.

Steps to Reproduce

  1. Set DB_ENGINE=postgres and POSTGRES_URL_OVERRIDE=postgresql://mealie@/mealie?host=/run/postgresql environment variables.
  2. See mealie fail to start up due to being unable to extract the password. This causes a runtime exception (instead of being handled gracefully).

Please provide relevant logs

May 07 23:26:19 plonkie systemd[1]: Starting Mealie, a self hosted recipe manager and meal planner...
May 07 23:26:22 plonkie init_db[952]: Traceback (most recent call last):
May 07 23:26:22 plonkie init_db[952]:   File "/nix/store/lpi16513bai8kg2bd841745vzk72475x-python3-3.11.9/lib/python3.11/logging/config.py", line 573, in configure
May 07 23:26:22 plonkie init_db[952]:     handler = self.configure_handler(handlers[name])
May 07 23:26:22 plonkie init_db[952]:               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
May 07 23:26:22 plonkie init_db[952]:   File "/nix/store/lpi16513bai8kg2bd841745vzk72475x-python3-3.11.9/lib/python3.11/logging/config.py", line 757, in configure_handler
May 07 23:26:22 plonkie init_db[952]:     result = factory(**kwargs)
May 07 23:26:22 plonkie init_db[952]:              ^^^^^^^^^^^^^^^^^
May 07 23:26:22 plonkie init_db[952]:   File "/nix/store/lpi16513bai8kg2bd841745vzk72475x-python3-3.11.9/lib/python3.11/logging/handlers.py", line 155, in __init__
May 07 23:26:22 plonkie init_db[952]:     BaseRotatingHandler.__init__(self, filename, mode, encoding=encoding,
May 07 23:26:22 plonkie init_db[952]:   File "/nix/store/lpi16513bai8kg2bd841745vzk72475x-python3-3.11.9/lib/python3.11/logging/handlers.py", line 58, in __init__
May 07 23:26:22 plonkie init_db[952]:     logging.FileHandler.__init__(self, filename, mode=mode,
May 07 23:26:22 plonkie init_db[952]:   File "/nix/store/lpi16513bai8kg2bd841745vzk72475x-python3-3.11.9/lib/python3.11/logging/__init__.py", line 1181, in __init__
May 07 23:26:22 plonkie init_db[952]:     StreamHandler.__init__(self, self._open())
May 07 23:26:22 plonkie init_db[952]:                                  ^^^^^^^^^^^^
May 07 23:26:22 plonkie init_db[952]:   File "/nix/store/lpi16513bai8kg2bd841745vzk72475x-python3-3.11.9/lib/python3.11/logging/__init__.py", line 1213, in _open
May 07 23:26:22 plonkie init_db[952]:     return open_func(self.baseFilename, self.mode,
May 07 23:26:22 plonkie init_db[952]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
May 07 23:26:22 plonkie init_db[952]: PermissionError: [Errno 13] Permission denied: '/mnt/storagebox/mealie/mealie.log'
May 07 23:26:22 plonkie init_db[952]: The above exception was the direct cause of the following exception:
May 07 23:26:22 plonkie init_db[952]: Traceback (most recent call last):
May 07 23:26:22 plonkie init_db[952]:   File "/nix/store/0qx0wf0pr2w8fiilnlxh26sp22y347pq-python3.11-mealie-1.5.1/lib/python3.11/site-packages/mealie/scripts/install_model.py", line 3, in <module>
May 07 23:26:22 plonkie init_db[952]:     from mealie.services.parser_services import crfpp
May 07 23:26:22 plonkie init_db[952]:   File "/nix/store/0qx0wf0pr2w8fiilnlxh26sp22y347pq-python3.11-mealie-1.5.1/lib/python3.11/site-packages/mealie/services/parser_services/__init__.py", line 1, in <module>
May 07 23:26:22 plonkie init_db[952]:     from .ingredient_parser import *
May 07 23:26:22 plonkie init_db[952]:   File "/nix/store/0qx0wf0pr2w8fiilnlxh26sp22y347pq-python3.11-mealie-1.5.1/lib/python3.11/site-packages/mealie/services/parser_services/ingredient_parser.py", line 10, in <module>
May 07 23:26:22 plonkie init_db[952]:     from mealie.db.models.recipe.ingredient import IngredientFoodModel, IngredientUnitModel
May 07 23:26:22 plonkie init_db[952]:   File "/nix/store/0qx0wf0pr2w8fiilnlxh26sp22y347pq-python3.11-mealie-1.5.1/lib/python3.11/site-packages/mealie/db/models/recipe/__init__.py", line 3, in <module>
May 07 23:26:22 plonkie init_db[952]:     from .category import *
May 07 23:26:22 plonkie init_db[952]:   File "/nix/store/0qx0wf0pr2w8fiilnlxh26sp22y347pq-python3.11-mealie-1.5.1/lib/python3.11/site-packages/mealie/db/models/recipe/category.py", line 16, in <module>
May 07 23:26:22 plonkie init_db[952]:     logger = root_logger.get_logger()
May 07 23:26:22 plonkie init_db[952]:              ^^^^^^^^^^^^^^^^^^^^^^^^
May 07 23:26:22 plonkie init_db[952]:   File "/nix/store/0qx0wf0pr2w8fiilnlxh26sp22y347pq-python3.11-mealie-1.5.1/lib/python3.11/site-packages/mealie/core/root_logger.py", line 37, in get_logger
May 07 23:26:22 plonkie init_db[952]:     __root_logger = configured_logger(
May 07 23:26:22 plonkie init_db[952]:                     ^^^^^^^^^^^^^^^^^^
May 07 23:26:22 plonkie init_db[952]:   File "/nix/store/0qx0wf0pr2w8fiilnlxh26sp22y347pq-python3.11-mealie-1.5.1/lib/python3.11/site-packages/mealie/core/logger/config.py", line 66, in configured_logger
May 07 23:26:22 plonkie init_db[952]:     logging_config.dictConfig(config=__conf)
May 07 23:26:22 plonkie init_db[952]:   File "/nix/store/lpi16513bai8kg2bd841745vzk72475x-python3-3.11.9/lib/python3.11/logging/config.py", line 823, in dictConfig
May 07 23:26:22 plonkie init_db[952]:     dictConfigClass(config).configure()
May 07 23:26:22 plonkie init_db[952]:   File "/nix/store/lpi16513bai8kg2bd841745vzk72475x-python3-3.11.9/lib/python3.11/logging/config.py", line 580, in configure
May 07 23:26:22 plonkie init_db[952]:     raise ValueError('Unable to configure handler '
May 07 23:26:22 plonkie init_db[952]: ValueError: Unable to configure handler 'file'
May 07 23:26:24 plonkie init_db[1523]: Traceback (most recent call last):
May 07 23:26:24 plonkie init_db[1523]:   File "/nix/store/0qx0wf0pr2w8fiilnlxh26sp22y347pq-python3.11-mealie-1.5.1/lib/python3.11/site-packages/mealie/db/init_db.py", line 13, in <module>
May 07 23:26:24 plonkie init_db[1523]:     from mealie.db.db_setup import session_context
May 07 23:26:24 plonkie init_db[1523]:   File "/nix/store/0qx0wf0pr2w8fiilnlxh26sp22y347pq-python3.11-mealie-1.5.1/lib/python3.11/site-packages/mealie/db/db_setup.py", line 25, in <module>
May 07 23:26:24 plonkie init_db[1523]:     SessionLocal, engine = sql_global_init(settings.DB_URL)  # type: ignore
May 07 23:26:24 plonkie init_db[1523]:                                            ^^^^^^^^^^^^^^^
May 07 23:26:24 plonkie init_db[1523]:   File "/nix/store/0qx0wf0pr2w8fiilnlxh26sp22y347pq-python3.11-mealie-1.5.1/lib/python3.11/site-packages/mealie/core/settings/settings.py", line 91, in DB_URL
May 07 23:26:24 plonkie init_db[1523]:     return self.DB_PROVIDER.db_url if self.DB_PROVIDER else None
May 07 23:26:24 plonkie init_db[1523]:            ^^^^^^^^^^^^^^^^^^^^^^^
May 07 23:26:24 plonkie init_db[1523]:   File "/nix/store/0qx0wf0pr2w8fiilnlxh26sp22y347pq-python3.11-mealie-1.5.1/lib/python3.11/site-packages/mealie/core/settings/db_providers.py", line 55, in db_url
May 07 23:26:24 plonkie init_db[1523]:     remainder = remainder.split(":", 1)[1]
May 07 23:26:24 plonkie init_db[1523]:                 ~~~~~~~~~~~~~~~~~~~~~~~^^^
May 07 23:26:24 plonkie init_db[1523]: IndexError: list index out of range
May 07 23:26:24 plonkie systemd[1]: mealie.service: Control process exited, code=exited, status=1/FAILURE
May 07 23:26:24 plonkie systemd[1]: mealie.service: Failed with result 'exit-code'.
May 07 23:26:24 plonkie systemd[1]: Failed to start Mealie, a self hosted recipe manager and meal planner.

Mealie Version

1.5.1

Deployment

Other (please specify below)

Additional Deployment Details

NixOS

@anoadragon453 anoadragon453 added bug Something isn't working triage labels May 7, 2024
@boc-the-git
Copy link
Collaborator

Seems reasonable, thanks for providing the docs reference!

You seem to have a good handle on this @anoadragon453, would you like to raise the pull request for the change? 🙏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug: confirmed bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants