SGTM - but it would probably be a good idea to do some preliminary testing
of the upgrade path it would result in.

Kapil, have you tried to run different mesos processes with and w/o the
internal namespace?

Niklas

On 26 January 2015 at 12:47, Vinod Kone <vinodk...@gmail.com> wrote:

> SGTM. I would suggest to first address the non-proto files before changing
> the proto files.
>
> On Mon, Jan 26, 2015 at 12:35 PM, Kapil Arya <ka...@mesosphere.io> wrote:
>
> > Hi All,
> >
> > TLDR: We currently use "mesos::internal" namespace for almost everything
> > inside src/.  However, in most cases, it is directly enclosing another
> > namespace.  This makes the "internal" namespace redundant and we should
> > kill it.
> >
> > I learned from Ben Hindman that the original motivation for introducing
> an
> > explicit internal namespace was to discourage people from exposing
> internal
> > symbols through "extern", etc.  Since we don't seem to expose symbols
> > through "extern" in our codebase, I think it's safe to kill this
> namespace.
> >
> > Here is a list of files that define classes directly in the
> mesos::internal
> > namespace (i.e. without enclosing a separate namespace) [1]:
> >
> > authorizer/authorizer.hpp
> > common/http.hpp
> > common/attributes.hpp
> > common/lock.hpp
> > files/files.hpp
> > hook/manager.hpp
> > master/contender.hpp
> > master/detector.hpp
> > usage/usage.hpp
> > watcher/whitelist_watcher.hpp
> >
> > messages/messages.pb.h
> >
> > Of the above list, things like hook/manager.hpp and
> > master/{contender,detector}.hpp can be moved into their own namespaces.
> I
> > am sure, we can come up with a strategy for the rest as well.
> >
> > One possible concern here might be messages.proto and the effects on
> > upgrades, etc., if we change the namespace/package for these protobufs.
> If
> > this turns out to be a real concern, we can possibly keep the internal
> > namespace for messages.proto.
> >
> > If we kill the "internal" namespace altogether, it would make it much
> > easier to expose some headers as public headers for modularization, etc..
> > This will also help us get rid of "namespace internal" from some of the
> > public headers that we already have.
> >
> > The motivation for killing the "internal" namespace comes from a
> > patch-set[2] that tries to expose slave/containerizer/isolator.hpp as
> > include/mesos/slave/isolator.hpp.  We wanted to keep Isolator inside the
> > "mesos::slave" namespace instead of putting it  directly in the "mesos"
> > namespace.  This change causes a lot of conflicts due to "mesos::slave"
> and
> > "mesos::internal::slave" and we had to resort to using fully qualified
> > names for a large number of definition in src/slave, src/tests, etc.
> >
> > Best,
> > Kapil
> >
> > [1] List obtained by running the following command and then filtering out
> > the instances where "internal" was enclosed in something other than
> > "mesos":
> >     grep -nr "} // namespace internal" * -B1 |grep -v
> > "namespace\|\-\-\|\.cpp"|cut -d'-' -f1
> >
> > [2] https://reviews.apache.org/r/30238/
> >      https://reviews.apache.org/r/29602/
> >      https://reviews.apache.org/r/29603/
> >
>

Reply via email to