Re: Unified server/desktop config

From: Bing Xu <bxu(at)pivotal(dot)io>
To: Surinder Kumar <surinder(dot)kumar(at)enterprisedb(dot)com>
Cc: Dave Page <dpage(at)pgadmin(dot)org>, pgadmin-hackers <pgadmin-hackers(at)postgresql(dot)org>, Ashesh Vashi <ashesh(dot)vashi(at)enterprisedb(dot)com>
Subject: Re: Unified server/desktop config
Date: 2017-08-14 03:59:48
Message-ID: CAPWgjRNVvYv3p_U3pnD+J7cB7bFkqRhexk9VDfigmJZ-ik95rg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers

Hi hackers,

We've reviewed this patch and it need us changing our own config_local.py
file. It's ok and we'll do the change in our configuration.

Thanks,
Bing & Violet

On Wed, Aug 9, 2017 at 8:49 PM, Surinder Kumar <
surinder(dot)kumar(at)enterprisedb(dot)com> wrote:

> Hi
>
> This patch includes the fix where this patch breaks when feature tests are
> run.
>
> Set builtins.SERVER_MODE if it is present in globals()['SERVER_MODE']
> else set to None.
>
> Please find updated patch.
> Thanks,
> Surinder
> ​
>
> On Wed, Aug 9, 2017 at 11:57 AM, Surinder Kumar <
> surinder(dot)kumar(at)enterprisedb(dot)com> wrote:
>
>> Sure, I will update.
>>
>> On Wed, Aug 9, 2017 at 11:17 AM, Dave Page <dpage(at)pgadmin(dot)org> wrote:
>>
>>> Please update the patch :-)
>>>
>>> --
>>> Dave Page
>>> Blog: http://pgsnake.blogspot.com
>>> Twitter: @pgsnake
>>>
>>> EnterpriseDB UK:http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>> On 9 Aug 2017, at 05:53, Surinder Kumar <surinder(dot)kumar(at)enterprisedb(dot)com>
>>> wrote:
>>>
>>> Hi,
>>>
>>> I noticed that test cases don’t run and I got an error:
>>>
>>> (pgAdmin_27)Laptop195:regression surinder$ python runtests.py --pkg feature_tests
>>> <module '__builtin__' (built-in)>
>>> Traceback (most recent call last):
>>> File "runtests.py", line 45, in <module>
>>> import config
>>> File "/Users/surinder/Documents/Projects/pgadmin4/web/config.py", line 121, in <module>
>>> if builtins.SERVER_MODE is None:
>>> AttributeError: 'module' object has no attribute'
>>> SERVER_MODE
>>> '
>>>
>>> I think this is because we are setting​ ​first​ ​builtins.SERVER_MODE​ in​ ​pgAdmin4.py
>>> but in test cases pgAdmin4.py is not being called.​
>>>
>>>
>>> On Tue, Aug 8, 2017 at 4:03 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:
>>>
>>>>
>>>>
>>>> On Tue, Aug 8, 2017 at 11:27 AM, Surinder Kumar <
>>>> surinder(dot)kumar(at)enterprisedb(dot)com> wrote:
>>>>
>>>>> On Tue, Aug 8, 2017 at 1:47 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:
>>>>>
>>>>>
>>>>>>
>>>>>> On Tue, Aug 8, 2017 at 7:18 AM, Surinder Kumar <
>>>>>> surinder(dot)kumar(at)enterprisedb(dot)com> wrote:
>>>>>>
>>>>>>> Hi
>>>>>>>
>>>>>>> On Ubuntu-14.04, I got error Application Server couldn't be
>>>>>>> contacted:
>>>>>>>
>>>>>>> *Steps performed:*
>>>>>>>
>>>>>>> - I have already installed pgAdmin4-1.4 which come with
>>>>>>> PostgreSQL-9.6 installer.
>>>>>>> then I run root(at)ubuntu:/opt/PostgreSQL/9.6/pgAdmin 4/bin#
>>>>>>> ./pgAdmin4./.
>>>>>>> - Now took latest git pull from HEAD
>>>>>>> - Apply unified_config.diff patch.
>>>>>>> - Then compiled pgAdmin4 in runtime and then run ./pgAdmin.
>>>>>>> - Got error Application Server couldn't be contacted.
>>>>>>>
>>>>>>> But when I ran ./pgAdmin4 for the second time. pgAdmin4 runs
>>>>>>> without any issue.
>>>>>>> I didn’t get any error on the terminal and log file.
>>>>>>> ​ I couldn't find why it gives this error.​
>>>>>>>
>>>>>>
>>>>>> I know Fahar has run into this with existing releases on Ubuntu. If
>>>>>> you enable debugging, can you see any clues? I assume it's going round the
>>>>>> retry loop before aborting?
>>>>>>
>>>>>>> *Another issue related to Alembic:*
>>>>>>>
>>>>>>> If I am running pgAdmin4 already installed on my machine, then I
>>>>>>> upgrade pgAdmin4 using Python wheel:
>>>>>>>
>>>>>>> (test_p27) surinder(at)ubuntu:~/virtualenvs/test_p27$ python
>>>>>>> ~/virtualenvs/test_p27/lib/python2.7/site-packages/pgadmin4/
>>>>>>> pgAdmin4.py
>>>>>>>
>>>>>>> *I am getting error:*
>>>>>>>
>>>>>>> alembic.util.exc.CommandError: Can't locate revision identified by
>>>>>>> 'd85a62333272'
>>>>>>>
>>>>>>> To fix this, I have to delete existing pgadmin4.db file. I don’t
>>>>>>> know if it is a valid case or should I log an RM if it is?
>>>>>>>
>>>>>> That's an annoying side-effect of the move to Alembic. The previous
>>>>>> DB code would quite happily (and intentionally) run with a newer version of
>>>>>> the database, however, the new code does not. You'll see this issue
>>>>>> whenever you've run a newer version of pgAdmin and then go back to an older
>>>>>> version that uses an older schema version.
>>>>>>
>>>>>> It would be nice to change this so it doesn't complain - but we'd
>>>>>> have to be cautious to only break compatibility on major releases.
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Apart for this, I didn’t see any functionality break. It works!!
>>>>>>> ​
>>>>>>>
>>>>>>> I liked the approach to set SEVER_MODE in runtime using built-ins.
>>>>>>>
>>>>>> Thanks. Do you think it warrants a 2.0 version number, given the
>>>>>> potential for breaking existing installations (I do, but would like other
>>>>>> feedback)? If we do that - and thus allow a parallel installation of 1.x
>>>>>> and 2.x), how would we resolve the Alembic issue you noted such that both
>>>>>> versions could be run against the same DB?
>>>>>>
>>>>> To resolve this issue while upgrading to newer version of pgAdmin4, we
>>>>> can add a parameter version_table: 'alembic_version-1.6 in
>>>>> web/migrations/env.py of upcoming pgAdmin4 source code(reference link
>>>>> <https://issues.asterisk.org/jira/secure/attachment/51610/ASTERISK-24311-set-version-table.diff>
>>>>> )
>>>>> It will create a new version table in pgadmin4.db database and it
>>>>> will instruct the Alembic to run migrations for the version stored in
>>>>> table(alembic_version-1.6) when new pgAdmin4 will be installed.
>>>>>
>>>>> I tried to check if it works or not. But somehow I couldn’t install
>>>>> pgAdmin4-1.5 from wheel.
>>>>>
>>>>> Alternatively I will try to generate new schema using in pgAdmin4
>>>>> source code(Git HEAD). It will generate a new migration version and then i
>>>>> will run pgAdmin4-1.6 from wheel having different migration number. It will
>>>>> create pgadmin4.db for 1.5.
>>>>> Then
>>>>> I will run pgAdmin4-1.6 from source code, so migration will take
>>>>> place and hopefully
>>>>> ​the ​
>>>>> sa
>>>>> me
>>>>> ​ ​
>>>>> pgadmin4.db will work for newer pgAdmin4 version.
>>>>>
>>>>> Reference link
>>>>> <https://issues.asterisk.org/jira/browse/ASTERISK-24311> where the
>>>>> same issue has been discussed.
>>>>>
>>>>
>>>> Sounds good - please investigate further.
>>>>
>>> I spent some time, understands how Alembic works and I thought it is
>>> easy using the reference link but not, It needs more R&D. I will look how
>>> can we fix it.
>>>
>>>>
>>>> Thanks!
>>>>
>>>>
>>>>> Thanks,
>>>>> Surinder
>>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>>> Thanks,
>>>>>>> Surinder
>>>>>>> ​
>>>>>>>
>>>>>>> On Mon, Aug 7, 2017 at 7:01 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Mon, Aug 7, 2017 at 1:43 PM, Surinder Kumar <
>>>>>>>> surinder(dot)kumar(at)enterprisedb(dot)com> wrote:
>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> The patch seems to work in Runtime mode, but fails in Server mode
>>>>>>>>> with error:
>>>>>>>>>
>>>>>>>>> (pgAdmin_27)Laptop195:pgadmin4 surinder$ python web/pgAdmin4.py
>>>>>>>>> Traceback (most recent call last):
>>>>>>>>> File "web/pgAdmin4.py", line 55, in <module>
>>>>>>>>> exec(open(file_quote(setupfile), 'r').read())
>>>>>>>>> File "<string>", line 35, in <module>
>>>>>>>>> File "/Users/surinder/Documents/Projects/pgadmin4/web/pgadmin/setup/data_directory.py", line 23, in create_app_data_directory
>>>>>>>>> _create_directory_if_not_exists(os.path.dirname(config.SQLITE_PATH))
>>>>>>>>> File "/Users/surinder/Documents/Projects/pgadmin4/web/pgadmin/setup/data_directory.py", line 15, in _create_directory_if_not_exists
>>>>>>>>> os.mkdir(_path)
>>>>>>>>> OSError: [Errno 13] Permission denied: '/var/lib/pgadmin'
>>>>>>>>> (pgAdmin_27)Laptop195:pgadmin4 surinder$
>>>>>>>>>
>>>>>>>>> This is because the directory /var/lib/ has root only access and
>>>>>>>>> I am running pgAdmin4 with the non-root user.
>>>>>>>>>
>>>>>>>>> Also pgadmin directory is not created.
>>>>>>>>>
>>>>>>>>> (pgAdmin_35)Laptop195:pgadmin4 surinder$ ls /var/lib/pgadmin
>>>>>>>>> ls: /var/lib/pgadmin: No such file or directory
>>>>>>>>>
>>>>>>>>> I got same error with MacOSX and Ubuntu-14.04 machines
>>>>>>>>> irrespective of Python version.
>>>>>>>>>
>>>>>>>>> Meanwhile, I am testing patch with other test cases.
>>>>>>>>>
>>>>>>>> That's fully expected. In the case of Linux, the packages will be
>>>>>>>> responsible for creating those directories with the appropriate ownership.
>>>>>>>> In other cases, the user would.
>>>>>>>>
>>>>>>> ​ok, I got it.​
>>>>>>>
>>>>>>>>
>>>>>>>> There's not really much we can do about that - and it's exactly
>>>>>>>> what would happen if you try to run many other packages yourself when
>>>>>>>> standard *nix paths are used.
>>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Surinder
>>>>>>>>> ​
>>>>>>>>>
>>>>>>>>> On Mon, Aug 7, 2017 at 4:33 PM, Surinder Kumar <
>>>>>>>>> surinder(dot)kumar(at)enterprisedb(dot)com> wrote:
>>>>>>>>>
>>>>>>>>>> On Mon, Aug 7, 2017 at 4:11 PM, Ashesh Vashi <
>>>>>>>>>> ashesh(dot)vashi(at)enterprisedb(dot)com> wrote:
>>>>>>>>>>
>>>>>>>>>>> On Mon, Aug 7, 2017 at 3:59 PM, Dave Page <dpage(at)pgadmin(dot)org>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Anyone?
>>>>>>>>>>>>
>>>>>>>>>>> Surinder - please give this one priority.
>>>>>>>>>>>
>>>>>>>>>> Sure
>>>>>>>>>> ​.​
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>>
>>>>>>>>>>> Thanks & Regards,
>>>>>>>>>>>
>>>>>>>>>>> Ashesh Vashi
>>>>>>>>>>> EnterpriseDB INDIA: Enterprise PostgreSQL Company
>>>>>>>>>>> <http://www.enterprisedb.com/>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> *http://www.linkedin.com/in/asheshvashi*
>>>>>>>>>>> <http://www.linkedin.com/in/asheshvashi>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Thu, Jul 20, 2017 at 5:03 PM, Dave Page <dpage(at)pgadmin(dot)org>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> All,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Attached is a patch that aims to allow us to have a
>>>>>>>>>>>>> standardised config that will work out of the box for both web and desktop
>>>>>>>>>>>>> modes. It does this by doing two things:
>>>>>>>>>>>>>
>>>>>>>>>>>>> 1) The runtime sets SERVER_MODE in the Python environment
>>>>>>>>>>>>> before starting the app. If this value is set, then it overrides the
>>>>>>>>>>>>> default value of SERVER_MODE in the config.
>>>>>>>>>>>>>
>>>>>>>>>>>>> 2) The config file then offers default values for the various
>>>>>>>>>>>>> file locations for both server and desktop mode, setting them appropriately
>>>>>>>>>>>>> based on the derived SERVER_MODE value.
>>>>>>>>>>>>>
>>>>>>>>>>>>> The only downsides I can see from this are:
>>>>>>>>>>>>>
>>>>>>>>>>>>> - You cannot run in server mode in the runtime without
>>>>>>>>>>>>> manually reconfiguring SERVER_MODE and likely a bunch of paths in
>>>>>>>>>>>>> config_local.py
>>>>>>>>>>>>>
>>>>>>>>>>>>> - If you want to override SERVER_MODE, you'll probably also
>>>>>>>>>>>>> need to redefine the various paths in config_local.py.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I don't see either being something 99.9% of users would need
>>>>>>>>>>>>> though.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Can anyone see if the patch breaks anything, or if I missed
>>>>>>>>>>>>> any side effects?
>>>>>>>>>>>>>
>>>>>>>>>>>>> Is it likely to break things during upgrades? I suspect so...
>>>>>>>>>>>>> so maybe this should prompt v2.0?
>>>>>>>>>>>>>
>>>>>>>>>>>>> I'd appreciate multiple reviews of this, as it could break
>>>>>>>>>>>>> things. Note that I haven't yet updated the docs.
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Dave Page
>>>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>>>
>>>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Dave Page
>>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>>
>>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Dave Page
>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>> Twitter: @pgsnake
>>>>>>>>
>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Dave Page
>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>> Twitter: @pgsnake
>>>>>>
>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>> The Enterprise PostgreSQL Company
>>>>>>
>>>>> ​
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Dave Page
>>>> Blog: http://pgsnake.blogspot.com
>>>> Twitter: @pgsnake
>>>>
>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>> The Enterprise PostgreSQL Company
>>>>
>>>
>>>
>>
>

In response to

Responses

Browse pgadmin-hackers by date

  From Date Subject
Next Message Matthew Kleiman 2017-08-15 07:58:26 [pgaweb][patch] Use https link for git repo
Previous Message Navnath Gadakh 2017-08-11 10:28:04 Re: pgAdmin4: Random failure of FTS test cases due to improper random string creation