You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mesos.apache.org by Alex Rukletsov <al...@mesosphere.com> on 2016/07/22 15:07:48 UTC

On creating actor instances in Mesos

Folks,

I've noticed recently that some actors do not specify a distinguishable
actor ID. As a result, it may be hard to match output to a specific actor,
for example an excerpt from "__processes__" endpoint:

[{"events":[],"id":"(10)"},{"events":[],"id":"(11)"},{"events":[],"id":"(1279859)"},{"events":[],"id":"(15)"},
... ]

Every time you create an actor, i.e., a `ProcessBase` instance, you most
probably want to give it a meaningful id. Consider `StatusUpdateManager`.
Currently, the code does not specify the ID:

StatusUpdateManagerProcess::StatusUpdateManagerProcess(const Flags& _flags)
  : flags(_flags), paused(false) {}

Instead, a preferred way of calling the `StatusUpdateManagerProcess` c-tor
would be:

StatusUpdateManagerProcess::StatusUpdateManagerProcess(const Flags& _flags)
  : ProcessBase(process::ID::generate("status-update-manager")),
    flags(_flags),
    paused(false) {}

Best,
Alex

Re: On creating actor instances in Mesos

Posted by Gastón Kleiman <ga...@mesosphere.io>.
Hi,

As you can see in MESOS-5917, I made sure that all the processes I could
find specify a distinguishable IDs.

After talking to Alex R and Ben M, I enforced the following naming schema:

For processes created by Mesos:

   - Every process must specify a distinguishable process ID.

   - The process ID must contain only lowercase characters and use a dash
as word separator, e.g., `zookeeper-leader-contender`.

   - A common pattern is to prefix the ID with the name of the component,
e.g., `log-recover`, `logrotate-logger`.

For processes created by libprocess:

   - The ID of a process internal to libprocess (one with not associated
route/endpoint) must be enclosed in double underscores, and use underscores
instead of dashes as word separator, e.g., `__authentication_router__`.

   - The Mesos process ID naming schema applies to libprocess exposed to
libprocess users, via a route/associated to an endpoint, e.g., use `help`
instead of `__help__`.

From now on, please make sure you adhere to this naming scheme when
defining new processes!

Thanks,

-Gastón


On Sat, Jul 23, 2016 at 12:04 AM, Timothy Chen <tn...@gmail.com> wrote:

> +1
>
> Previously when I was adding tracing to Mesos this was one of the most
> missing piece of metadata to easily detect sender and receiver
> information.
>
> Tim
>
> On Fri, Jul 22, 2016 at 11:07 PM, Alex Rukletsov <al...@mesosphere.com>
> wrote:
> > Folks,
> >
> > I've noticed recently that some actors do not specify a distinguishable
> > actor ID. As a result, it may be hard to match output to a specific
> actor,
> > for example an excerpt from "__processes__" endpoint:
> >
> > [{"events":[],"id":"(10)"},{"events":[],"id":"(11)"},{"
> events":[],"id":"(1279859)"},{"events":[],"id":"(15)"},
> > ... ]
> >
> > Every time you create an actor, i.e., a `ProcessBase` instance, you most
> > probably want to give it a meaningful id. Consider `StatusUpdateManager`.
> > Currently, the code does not specify the ID:
> >
> > StatusUpdateManagerProcess::StatusUpdateManagerProcess(const Flags&
> _flags)
> >   : flags(_flags), paused(false) {}
> >
> > Instead, a preferred way of calling the `StatusUpdateManagerProcess`
> c-tor
> > would be:
> >
> > StatusUpdateManagerProcess::StatusUpdateManagerProcess(const Flags&
> _flags)
> >   : ProcessBase(process::ID::generate("status-update-manager")),
> >     flags(_flags),
> >     paused(false) {}
> >
> > Best,
> > Alex
>

Re: On creating actor instances in Mesos

Posted by Timothy Chen <tn...@gmail.com>.
+1

Previously when I was adding tracing to Mesos this was one of the most
missing piece of metadata to easily detect sender and receiver
information.

Tim

On Fri, Jul 22, 2016 at 11:07 PM, Alex Rukletsov <al...@mesosphere.com> wrote:
> Folks,
>
> I've noticed recently that some actors do not specify a distinguishable
> actor ID. As a result, it may be hard to match output to a specific actor,
> for example an excerpt from "__processes__" endpoint:
>
> [{"events":[],"id":"(10)"},{"events":[],"id":"(11)"},{"events":[],"id":"(1279859)"},{"events":[],"id":"(15)"},
> ... ]
>
> Every time you create an actor, i.e., a `ProcessBase` instance, you most
> probably want to give it a meaningful id. Consider `StatusUpdateManager`.
> Currently, the code does not specify the ID:
>
> StatusUpdateManagerProcess::StatusUpdateManagerProcess(const Flags& _flags)
>   : flags(_flags), paused(false) {}
>
> Instead, a preferred way of calling the `StatusUpdateManagerProcess` c-tor
> would be:
>
> StatusUpdateManagerProcess::StatusUpdateManagerProcess(const Flags& _flags)
>   : ProcessBase(process::ID::generate("status-update-manager")),
>     flags(_flags),
>     paused(false) {}
>
> Best,
> Alex