Support for non-unique process labels?
Nathan Long
him@REDACTED
Fri May 7 15:13:12 CEST 2021
In my original example, the "db_connection" processes are created by a
library. Ideally any solution to this problem would be something
standardized so that library authors can use it and their users don't have
to do anything special to see the labels.
A global name like "db_connection_(UUID)" would work, but is a hack, since
all we really want is to say what sort of process this is.
On Fri, May 7, 2021 at 7:54 AM Loïc Hoguin <essen@REDACTED> wrote:
> I don't know what makes you think that. What I linked to does not
> eliminate global atoms like we have today, it just adds local atoms
> which are GC. Global atoms still go into the atom table and are never
> GC. They are the atoms used for modules, functions and literals in the
> code. Local atoms would only be used when generating atoms. The
> performance cost would certainly not be devastating.
>
> On 07/05/2021 11:03, Stanislav Ledenev wrote:
> > As far as I understand how VM works implementation of the idea of
> > garbage collectable atoms will lead to devastating consequences. And
> > performance will be the first victim.
> >
> > IMHO cheapest implementation of process labels can be achieved on top of
> > process dictionary (oh, slippery) through some special value. Plus
> > modification of observer app.
> >
> > пт, 7 мая 2021 г. в 11:24, Loïc Hoguin <essen@REDACTED
> > <mailto:essen@REDACTED>>:
> >
> > What you want is to be able to either:
> >
> > * register processes using any term and not just atoms
> > * have garbage collectable atoms
> >
> > That way Observer will always show the proper name.
> >
> > Then for logs all you need is for <0.2555.0> to be identified at some
> > point (in other logs with its registered name + pid for example). Or
> > hook into logger as others have pointed out.
> >
> > GC atoms has long been on the wishlist of many people:
> >
> > * https://www.erlang.org/erlang-enhancement-proposals/eep-0020.html
> > *
> >
> https://github.com/nox/otp/commit/bf3334c1d2c0e404abaec72a985134def158afcf
> >
> > It would be fantastic if this could get traction.
> >
> > Cheers,
> >
> > On 06/05/2021 16:06, Nathan Long wrote:
> > > Is there a way to add a non-unique label to a process? If not, I
> > would
> > > like to propose that it be added.
> > >
> > > The label could be shown with or instead of a PID. I think this
> > would be
> > > useful in at least two areas.
> > >
> > > First, when observing a running system, the PID is not
> > descriptive. I
> > > have Observer open right now looking at part of my system, and I
> > can see
> > > one globally registered process name displayed, but everything
> > else is a
> > > PID. What are those processes? I might be able to figure it out by
> > > clicking the process and seeing what its initial call was, but
> > often I
> > > can tell is "it's a GenServer." The structure of the system would
> be
> > > much more apparent if I saw labels like "db_connection" or
> > > "request_queue_worker".
> > >
> > > Second, when reading error messages in logs or an exception
> > tracker, the
> > > PID is not useful. For example, I'm looking at an error in Sentry
> > right
> > > now that says "Sentry.CrashError error ** (exit) 'stopping because
> > > dependent process <0.2255.0> died: killed'". I have no idea what
> > > `<0.2555.0>` was, so I don't know what to debug.
> > >
> > > Does this exist or would others support it being added to the
> BEAM?
> > >
> > > -- Nathan
> >
> > --
> > Loïc Hoguin
> > https://ninenines.eu
> >
>
> --
> Loïc Hoguin
> https://ninenines.eu
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20210507/48fa9734/attachment.htm>
More information about the erlang-questions
mailing list