Re: Upgradede Pgadmin4 to v6.12 - new startup error - Mailing list pgadmin-support

From Dave Page
Subject Re: Upgradede Pgadmin4 to v6.12 - new startup error
Date
Msg-id CA+OCxows3CiNqu1mY15bx-WJ+G8iYU5acJESnEY288Z0syxh4w@mail.gmail.com
Whole thread Raw
In response to Re: Upgradede Pgadmin4 to v6.12 - new startup error  (Cherio <cherio@gmail.com>)
Responses Content assist / autocomplete hangs the server (latest pgAdmin version)  (Cherio <cherio@gmail.com>)
List pgadmin-support
Hi

On Mon, 1 Aug 2022 at 16:46, Cherio <cherio@gmail.com> wrote:
Thanks Dave! The application started after I added the line you suggested 👍🏻. Although in my opinion, trying to work around a new feature in order to start pgadmin feels wrong.


I agree. The difficulty is though that we either fail early, or fail later which would likely affect fewer users, but would be much harder to detect reliably as it’s an external process that would fail(in this case, azure-cli I believe).

I have 2 follow-up questions.

1. Presently I have to redefine paths for several files and directories (see below). Is there a better way/place to define DATA_DIR so that subdirectories and files in it need not be explicitly redefined? It just doesn't feel like a good design pattern :)

LOG_FILE = os.path.join(DATA_DIR, 'pgadmin4.log')
SQLITE_PATH = os.path.join(DATA_DIR, 'pgadmin4.db')
SESSION_DB_PATH = os.path.join(DATA_DIR, 'sessions')
STORAGE_DIR = os.path.join(DATA_DIR, 'storage')
AZURE_CREDENTIAL_CACHE_DIR = os.path.join(DATA_DIR, 'azurecredentialcache')

Yeah, it’s a chicken and egg problem, and it has mildly annoyed me in the past too. I’ll give it some more thought.


2. I am guessing the new "azurecredentialcache" directory is related to the new feature that adds "support for Azure PostgreSQL deployment in server mode". Why is it trying to create new directories in an environment that has nothing to do with Azure?

It has no way to know that you’re not going to use that feature - for all we or it knows, your boss might ask you to evaluate PostgreSQL on Azure next week :-)



On Mon, Aug 1, 2022 at 11:10 AM Dave Page <dpage@pgadmin.org> wrote:
Hi

On Mon, 1 Aug 2022 at 16:01, Cherio <cherio@gmail.com> wrote:
I grepped the sources for 'azurecredentialcache':

user@HOST:~/opt/pgadmin4$ grep -R azurecredentialcache .
./lib/python3.8/site-packages/pgadmin4/config.py:AZURE_CREDENTIAL_CACHE_DIR = os.path.join(DATA_DIR, 'azurecredentialcache')

I do re-define DATA_DIR in my configuration file (see below) so it is unclear why it is trying to create something in "/var/lib/pgadmin":

Almost certainly because config_local.py is read at the end of config.py, so the change you make to DATA_DIR isn't reflected by AZURE_CREDENTIAL_CACHE_DIR.
 

user@HOST:~/opt/pgadmin4$ cat ./lib/python3.8/site-packages/pgadmin4/config_local.py
import os
DATA_DIR = os.path.realpath(os.path.expanduser(u'~/.config/pgadmin-v4/'))
LOG_FILE = os.path.join(DATA_DIR, 'pgadmin4.log')
SQLITE_PATH = os.path.join(DATA_DIR, 'pgadmin4.db')
SESSION_DB_PATH = os.path.join(DATA_DIR, 'sessions')
STORAGE_DIR = os.path.join(DATA_DIR, 'storage')
PGADMIN_INT_PORT=xxxx
DEFAULT_SERVER_PORT=xxxx
SERVER_MODE = False
MASTER_PASSWORD_REQUIRED = False

Try adding the following to config_local.py:

AZURE_CREDENTIAL_CACHE_DIR = os.path.join(DATA_DIR, 'azurecredentialcache')

That will ensure it gets reset after you redefine DATA_DIR.

I think we have some docs/comments about re-defining things if you change DATA_DIR; I'll go check they mention AZURE_CREDENTIAL_CACHE_DIR as well.
 

I skipped version 6.11 and upgraded from 6.10 so I can't say whether this broke in 6.11 or 6.12.

On Mon, Aug 1, 2022 at 10:09 AM Cherio <cherio@gmail.com> wrote:
This was just a regular upgrade (I went through dozens of these).
The new 6.12 version fails to start with the following error message:

  File "lib/python3.8/site-packages/pgadmin4/pgAdmin4.py", line 93, in <module>
    app = create_app()
  File "/path-to/opt/pgadmin4/lib/python3.8/site-packages/pgadmin4/pgadmin/__init__.py", line 270, in create_app
    create_app_data_directory(config)
  File "/path-to/opt/pgadmin4/lib/python3.8/site-packages/pgadmin4/pgadmin/setup/data_directory.py", line 117, in create_app_data_directory
    _create_directory_if_not_exists(config.AZURE_CREDENTIAL_CACHE_DIR)
  File "/path-to/opt/pgadmin4/lib/python3.8/site-packages/pgadmin4/pgadmin/setup/data_directory.py", line 20, in _create_directory_if_not_exists
    os.mkdir(_path)
FileNotFoundError: [Errno 2] No such file or directory: '/var/lib/pgadmin/azurecredentialcache'

My setup has absolutely nothing to do with Azure. I use python wheel having PgAdmin installed in an unprivileged environment, so I am puzzled why it is all of sudden trying to look for something in "/var/lib/pgadmin" or create things there?



--
--

pgadmin-support by date:

Previous
From: Cherio
Date:
Subject: Re: Upgradede Pgadmin4 to v6.12 - new startup error
Next
From:
Date:
Subject: Partitioned table with fillfactor