O$: PostgreSQL setting the $programname property
Nick Renders
omnis1 at arcict.com
Fri Nov 17 15:08:59 UTC 2023
It took some convincing, but an enhancement request has been raised:
ST/*P/124
As a workaround, you could set the $programname property before using
the $logon() method.
The listener process will use this as application_name, same as the
original connection.
Afterwards, you can rename the original connection with the "SET
application_name = ..." command, but not the listener connection.
Nick Renders
On 16 Nov 2023, at 14:54, Doug Easterbrook wrote:
> there is no way that I know of to set that name.
>
> I’d like to do it too, can you raise an enhancement with Omnis
> Support
>
>
>
>
> Doug Easterbrook
> Arts Management Systems Ltd.
> mailto:doug at artsman.com
> http://www.artsman.com
> Phone (403) 650-1978
>
>> On Nov 16, 2023, at 1:53 AM, Nick Renders <omnis1 at arcict.com>
>> wrote:
>>
>> On a related note: does anyone know how to set the application_name
>> for a listener?
>> If I am not mistaken, the PGSQLSESSION.$listen() method opens a
>> second connection to the Postgres server.
>> But I don't see any option to set the application_name of that
>> connection.
>>
>> Best regards,
>>
>> Nick Renders
>>
>>
>> On 6 Nov 2023, at 16:10, Doug Easterbrook via omnisdev-en wrote:
>>
>>> hi Paul.
>>>
>>> Like Alex, methinks you are speaking of the application_name column
>>> from select * from pg_stat_activity.
>>>
>>> I spoke about this at euromnis and put the example in my demo code.
>>>
>>> We set (and reset) the application_name at various times while our
>>> application is running. We also set it in background workers as one
>>> of the first commands in the list of sql sent to the postgres
>>> worker. Been ding this for close to a decade and its proved
>>> useful
>>>
>>> why?
>>>
>>> Most times, I don’t really care what the user is doing. But if
>>> the user is doing some sensitive task like posting a whole lot of
>>> stuff to accounting, or running a big import, or merging a lot of
>>> data together, I wanted a way to know:
>>> who might be sucking up cpu
>>> what they were up to
>>> and if they were doing something that I might not want to kill
>>> remotely in some sort of deadlock situation. eg, if you are
>>> posting to accounting, thats the last thing I’d do.
>>>
>>> I also want to know if
>>> 1) they are sitting at the ‘login’ window so that I don’t
>>> count them towards using a licence. so I set a state for that.
>>> 2) if they were using a thread, and it died, and if they reconnected
>>> to the database in our recovery procedures. At one time we were
>>> having a tough time with network instability at a couple of client
>>> sites that I simply wanted to know this — so I could manage
>>> connections if need be.
>>> 3) if they issued a long running find (in background worker) and
>>> thne asked for another find (which we send to postgres, killing the
>>> prior thread) so we don’t have too many threads.
>>> 4) what version of omnis they are using if we have not forced them
>>> to update
>>>
>>>
>>> anyway, the point is, there are lots of reasons to know roughly what
>>> state the user is in and what they are doing.
>>>
>>>
>>>
>>> you can set the application_name at any time by issuing the sql
>>> command. I think yo’ve got 50 characters).
>>>
>>>
>>> set application_name='What you want to say'
>>>
>>>
>>>
>>> in general, we make our application_name look something useful to us
>>> like
>>>
>>> TM Desktop xx.yy.zz. (Darwin-M1-32052) - Posting
>>> TM Desktop xx.yy.zz. (Darwin-32052) - Login
>>> TM Desktop xx.yy.zz. (Darwin-32052) - Worker
>>> TM Server xx.yy.zz (windows-31983) - Housekeeper
>>> TM Server xx.yy.xx (linux-31905) - Reporter
>>>
>>>
>>>
>>> the gist is:
>>> — TM Desktop or TM Server means fat client on some ultra thin
>>> client server process
>>> — xx.yy.zz the version of our program (so I can see if people got
>>> upgraded during a release)
>>> — (Darwin/Windows/Linux- so that I know if the platform, hardware
>>> they are using
>>> — 32052) to tell me the release number of omnis they are running
>>> (eg 32502, 32983, 31905 for 10.22.32502 etc)
>>> — and a final note to tell me roughly what they are doing.
>>>
>>>
>>>
>>> again, you can set these at any time by sending the sql command, so
>>> we generally set this
>>> — once on start of the application. eg. TM Desktop xx.yy.zz.
>>> (Darwin-32052) - Login
>>> — a second time after they log in. eg TM Desktop xx.yy.zz.
>>> (Darwin-32052)
>>> — and then maybe a couple of times if they do something I don’t
>>> want to interrupt
>>>
>>> and I also set it to this each time I start a worker: TM Desktop
>>> xx.yy.zz. (Darwin-32052) - Worker
>>>
>>>
>>>
>>> hope that helps about the HOW and the WHY we do it. it has come in
>>> handy more times than I can say.
>>>
>>>
>>>
>>>
>>> Doug Easterbrook
>>> Arts Management Systems Ltd.
>>> mailto:doug at artsman.com
>>> http://www.artsman.com
>>> Phone (403) 650-1978
>>>
>>>> On Nov 5, 2023, at 11:25 PM, Paul Mulroney
>>>> <pmulroney at logicaldevelopments.com.au> wrote:
>>>>
>>>> Hi Everyone,
>>>>
>>>> Has anyone tried to use the $programname property of a PGSession
>>>> object? I'd like to tell Postgres the application that's running
>>>> (eg Omnis), so that I can see it in the pg_stat_activity table, but
>>>> I can't seem to get it to work.
>>>>
>>>> I'm basically doing this:
>>>>
>>>> Calculate voSession.$programname as 'Fred'
>>>>
>>>> Am I missing anything?
>>>>
>>>> Regards,
>>>> Paul.
>>>>
>>>>
>>>> I remember the first time I saw a universal remote control … I
>>>> though to myself "Well, this changes everything"
>>>> --
>>>> Paul W. Mulroney We
>>>> Don't Do Simple Pty Ltd
>>>> pmulroney at logicaldevelopments.com.au Trading as Logical
>>>> Developments
>>>> www.logicaldevelopments.com.au ACN 161 009 374
>>>> Ph: +61 8 9458 3889 86
>>>> Coolgardie Street
>>>> BENTLEY
>>>> WA 6102
>>>>
>>>>
>>>>
>>>> _____________________________________________________________
>>>> Manage your list subscriptions at https://lists.omnis-dev.com
>>>> Start a new message -> mailto:omnisdev-en at lists.omnis-dev.com
>>>
>>> _____________________________________________________________
>>> Manage your list subscriptions at https://lists.omnis-dev.com
>>> Start a new message -> mailto:omnisdev-en at lists.omnis-dev.com
Nick Renders
ARC - your ICT service partner
H. D. Saviolaan 8
1700 Dilbeek
T: (00 32) (0)2 466 50 00
F: (00 32) (0)2 466 88 33
http://www.arcict.com
More information about the omnisdev-en
mailing list