FWIW, I think it's possible to merge in a separate repository into a
subdirectory while keeping git history, but I don't know if the other way
will be possible if commits span other parts of the repo as well\* (which
will likely happen sooner or later). So a separate repo is a choice we can
backtrack from if it proves problematic later.


\* it may be possible, but the commit messages might not make much sense
after that.

On Fri, 24 Aug 2018, 09:12 Benedict Elliott Smith, <bened...@apache.org>
wrote:

> +1 also for separate repo
>
> > On 24 Aug 2018, at 01:11, Jeff Jirsa <jji...@gmail.com> wrote:
> >
> > +1 for separate repo
> >
> >
> > --
> > Jeff Jirsa
> >
> >
> >> On Aug 23, 2018, at 1:00 PM, sankalp kohli <kohlisank...@gmail.com>
> wrote:
> >>
> >> Separate repo is in a majority so far. Please reply to this thread with
> >> your responses.
> >>
> >> On Tue, Aug 21, 2018 at 4:34 PM Rahul Singh <
> rahul.xavier.si...@gmail.com>
> >> wrote:
> >>
> >>> +1 for separate repo. Especially on git. Maybe make it a submodule.
> >>>
> >>> Rahul
> >>> On Aug 21, 2018, 3:33 PM -0500, Stefan Podkowinski <s...@apache.org>,
> >>> wrote:
> >>>> I'm also currently -1 on the in-tree option.
> >>>>
> >>>> Additionally to what Aleksey mentioned, I also don't see how we could
> >>>> make this work with the current build and release process. Our scripts
> >>>> [0] for creating releases (tarballs and native packages), would need
> >>>> significant work to add support for an independent side-car. Our ant
> >>>> based build process is also not a great start for adding new tasks,
> let
> >>>> alone integrating other tool chains for web components for a potential
> >>> UI.
> >>>>
> >>>> [0] https://git-wip-us.apache.org/repos/asf?p=cassandra-builds.git
> >>>>
> >>>>
> >>>>> On 21.08.18 19:20, Aleksey Yeshchenko wrote:
> >>>>> Sure, allow me to elaborate - at least a little bit. But before I do,
> >>> just let me note that this wasn’t a veto -1, just a shorthand for “I
> don’t
> >>> like this option”.
> >>>>>
> >>>>> It would be nice to have sidecar and C* version and release cycles
> >>> fully decoupled. I know it *can* be done when in-tree, but the way we
> vote
> >>> on releases with tags off current branches would have to change
> somehow.
> >>> Probably painfully. It would be nice to be able to easily enforce
> freezes,
> >>> like the upcoming one, on the whole C* repo, while allowing feature
> >>> development on the sidecar. It would be nice to not have sidecar
> commits in
> >>> emails from commits@ mailing list. It would be nice to not have C* CI
> >>> trigger necessarily on sidecar commits. Groups of people working on
> the two
> >>> repos will mostly be different too, so what’s the point in sharing the
> repo?
> >>>>>
> >>>>> Having an extra repo with its own set of branches is cheap and easy -
> >>> we already do that with dtests. I like cleanly separated things when
> >>> coupling is avoidable. As such I would prefer the sidecar to live in a
> >>> separate new repo, while still being part of the C* project.
> >>>>>
> >>>>> —
> >>>>> AY
> >>>>>
> >>>>> On 21 August 2018 at 17:06:39, sankalp kohli (kohlisank...@gmail.com
> )
> >>> wrote:
> >>>>>
> >>>>> Hi Aleksey,
> >>>>> Can you please elaborate on the reasons for your -1? This
> >>>>> way we can make progress towards any one approach.
> >>>>> Thanks,
> >>>>> Sankalp
> >>>>>
> >>>>> On Tue, Aug 21, 2018 at 8:39 AM Aleksey Yeshchenko <
> alek...@apple.com>
> >>>>> wrote:
> >>>>>
> >>>>>> FWIW I’m strongly -1 on in-tree approach, and would much prefer a
> >>> separate
> >>>>>> repo, dtest-style.
> >>>>>>
> >>>>>> —
> >>>>>> AY
> >>>>>>
> >>>>>> On 21 August 2018 at 16:36:02, Jeremiah D Jordan (
> >>>>>> jeremiah.jor...@gmail.com) wrote:
> >>>>>>
> >>>>>> I think the following is a very big plus of it being in tree:
> >>>>>>>> * Faster iteration speed in general. For example when we need to
> >>> add a
> >>>>>>>> new
> >>>>>>>> JMX endpoint that the sidecar needs, or change something from
> >>> JMX to a
> >>>>>>>> virtual table (e.g. for repair, or monitoring) we can do all
> >>> changes
> >>>>>>>> including tests as one commit within the main repository and
> >>> don't
> >>>>>> have
> >>>>>>>> to
> >>>>>>>> commit to main repo, sidecar repo,
> >>>>>>
> >>>>>> I also don’t see a reason why the sidecar being in tree means it
> >>> would not
> >>>>>> work in a mixed version cluster. The nodes themselves must work in a
> >>> mixed
> >>>>>> version cluster during a rolling upgrade, I would expect any
> >>> management
> >>>>>> side car to operate in the same manor, in tree or not.
> >>>>>>
> >>>>>> This tool will be pretty tightly coupled with the server, and as
> >>> someone
> >>>>>> with experience developing such tightly coupled tools, it is *much*
> >>> easier
> >>>>>> to make sure you don’t accidentally break them if they are in tree.
> >>> How
> >>>>>> many times has someone updated some JMX interface, updated nodetool,
> >>> and
> >>>>>> then moved on? Breaking all the external tools not in tree, without
> >>>>>> realizing it. The above point about being able to modify interfaces
> >>> and the
> >>>>>> side car in the same commit is huge in terms of making sure someone
> >>> doesn’t
> >>>>>> inadvertently break the side car while fixing something else.
> >>>>>>
> >>>>>> -Jeremiah
> >>>>>>
> >>>>>>
> >>>>>>> On Aug 21, 2018, at 10:28 AM, Jonathan Haddad <j...@jonhaddad.com>
> >>>>>> wrote:
> >>>>>>>
> >>>>>>> Strongly agree with Blake. In my mind supporting multiple versions
> >>> is
> >>>>>>> mandatory. As I've stated before, we already do it with Reaper, I'd
> >>>>>>> consider it a major misstep if we couldn't support multiple with
> >>> the
> >>>>>>> project - provided admin tool. It's the same reason dtests are
> >>> separate
> >>>>>> -
> >>>>>>> they work with multiple versions.
> >>>>>>>
> >>>>>>> The number of repos does not affect distribution - if we want to
> >>> ship
> >>>>>>> Cassandra with the admin / repair tool (we should, imo), that can
> >>> be
> >>>>>> part
> >>>>>>> of the build process.
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> On Mon, Aug 20, 2018 at 9:21 PM Blake Eggleston <
> >>> beggles...@apple.com>
> >>>>>>> wrote:
> >>>>>>>
> >>>>>>>> If the sidecar is going to be on a different release cadence, or
> >>>>>> support
> >>>>>>>> interacting with mixed mode clusters, then it should definitely
> >>> be in
> >>>>>> a
> >>>>>>>> separate repo. I don’t even know how branching and merging would
> >>> work
> >>>>>> in a
> >>>>>>>> repo that supports 2 separate release targets and/or mixed mode
> >>>>>>>> compatibility, but I’m pretty sure it would be a mess.
> >>>>>>>>
> >>>>>>>> As a cluster management tool, mixed mode is probably going to be
> >>> a goal
> >>>>>> at
> >>>>>>>> some point. As a new project, it will benefit from not being
> >>> tied to
> >>>>>> the C*
> >>>>>>>> release cycle (which would probably delay any sidecar release
> >>> until
> >>>>>>>> whenever 4.1 is cut).
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> On August 20, 2018 at 3:22:54 PM, Joseph Lynch (
> >>> joe.e.ly...@gmail.com)
> >>>>>>
> >>>>>>>> wrote:
> >>>>>>>>
> >>>>>>>> I think that the pros of incubating the sidecar in tree as a tool
> >>>>>> first
> >>>>>>>> outweigh the alternatives at this point of time. Rough tradeoffs
> >>> that
> >>>>>> I
> >>>>>>>> see:
> >>>>>>>>
> >>>>>>>> Unique pros of in tree sidecar:
> >>>>>>>> * Faster iteration speed in general. For example when we need to
> >>> add a
> >>>>>>>> new
> >>>>>>>> JMX endpoint that the sidecar needs, or change something from
> >>> JMX to a
> >>>>>>>> virtual table (e.g. for repair, or monitoring) we can do all
> >>> changes
> >>>>>>>> including tests as one commit within the main repository and
> >>> don't
> >>>>>> have
> >>>>>>>> to
> >>>>>>>> commit to main repo, sidecar repo, and dtest repo (juggling
> >>> version
> >>>>>>>> compatibility along the way).
> >>>>>>>> * We can in the future more easily move serious background
> >>>>>> functionality
> >>>>>>>> like compaction or repair itself (not repair scheduling, actual
> >>>>>>>> repairing)
> >>>>>>>> into the sidecar with a single atomic commit, we don't have to
> >>> do two
> >>>>>>>> phase
> >>>>>>>> commits where we add some IPC mechanism to allow us to support
> >>> it in
> >>>>>>>> both,
> >>>>>>>> then turn it on in the sidecar, then turn it off in the server,
> >>> etc...
> >>>>>>>> * I think that the verification is much easier (sounds like
> >>> Jonathan
> >>>>>>>> disagreed on the other thread, I could certainly be wrong), and
> >>> we
> >>>>>> don't
> >>>>>>>> have to worry about testing matrices to assure that the sidecar
> >>> works
> >>>>>>>> with
> >>>>>>>> various versions as the version of the sidecar that is released
> >>> with
> >>>>>> that
> >>>>>>>> version of Cassandra is the only one we have to certify works. If
> >>>>>> people
> >>>>>>>> want to pull in new versions or maintain backports they can do
> >>> that at
> >>>>>>>> their discretion/testing.
> >>>>>>>> * We can iterate and prove value before committing to a choice.
> >>> Since
> >>>>>> it
> >>>>>>>> will be a separate artifact from the start we can always move the
> >>>>>>>> artifact
> >>>>>>>> to a separate repo later (but moving the other way is harder).
> >>>>>>>> * Users will get the sidecar "for free" when they install the
> >>> daemon,
> >>>>>>>> they
> >>>>>>>> don't need to take affirmative action to e.g. be able to restart
> >>> their
> >>>>>>>> cluster, run repair, or back their data up; it just comes out of
> >>> the
> >>>>>> box
> >>>>>>>> for free.
> >>>>>>>>
> >>>>>>>> Unique pros of a separate repository sidecar:
> >>>>>>>> * We can use a more modern build system like gradle instead of
> >>> ant
> >>>>>>>> * Merging changes is less "scary" I guess (I feel like if you're
> >>> not
> >>>>>>>> touching the daemon this is already true but I could see this
> >>> being
> >>>>>> less
> >>>>>>>> worrisome for some).
> >>>>>>>> * Releasing a separate artifact is somewhat easier from a
> >>> separate
> >>>>>> repo
> >>>>>>>> (especially if we have gradle which makes e.g. building debs and
> >>> rpms
> >>>>>>>> trivial).
> >>>>>>>> * We could backport to previous versions without getting into
> >>>>>> arguments
> >>>>>>>> about bug fixes vs features.
> >>>>>>>> * Committers could be different from the main repo, which ...
> >>> may be a
> >>>>>>>> useful thing
> >>>>>>>>
> >>>>>>>> Non unique pros of a sidecar (could be achieved in the main repo
> >>> or in
> >>>>>> a
> >>>>>>>> separate repo):
> >>>>>>>> * A separate build artifact .jar/.deb/.rpm that can be installed
> >>>>>>>> separately. It's slightly easier with a separate repo but
> >>> certainly
> >>>>>> not
> >>>>>>>> out
> >>>>>>>> of reach within a single repo (indeed the current patch already
> >>> creates
> >>>>>> a
> >>>>>>>> separate jar, and we could create a separate .deb reasonably
> >>> easily).
> >>>>>>>> Personally I think having a separate .deb/.rpm is premature at
> >>> this
> >>>>>> point
> >>>>>>>> (for companies that really want it they can build their own
> >>> packages
> >>>>>>>> using
> >>>>>>>> the .jars), but I think it really is a distracting issue from
> >>> where
> >>>>>> the
> >>>>>>>> patch should go as we can always choose to remove experimental
> >>> .jar
> >>>>>> files
> >>>>>>>> that the main daemon doesn't touch.
> >>>>>>>> * A separate process lifecycle. No matter where the sidecar
> >>> goes, we
> >>>>>> get
> >>>>>>>> the benefit of restarting it being less dangerous for
> >>> availability
> >>>>>> than
> >>>>>>>> restarting the main daemon.
> >>>>>>>>
> >>>>>>>> That all being said, these are strong opinions weakly held and I
> >>> would
> >>>>>>>> rather get something actually committed so that we can prove
> >>> value one
> >>>>>>>> way
> >>>>>>>> or the other and am therefore, of course, happy to put sidecar
> >>> patches
> >>>>>>>> wherever someone can review and commit it.
> >>>>>>>>
> >>>>>>>> -Joey
> >>>>>>>>
> >>>>>>>> On Mon, Aug 20, 2018 at 1:52 PM sankalp kohli <
> >>> kohlisank...@gmail.com>
> >>>>>>
> >>>>>>>> wrote:
> >>>>>>>>
> >>>>>>>>> Hi,
> >>>>>>>>> I am starting a new thread to get consensus on where the side
> >>> car
> >>>>>>>>> should be contributed.
> >>>>>>>>>
> >>>>>>>>> Please send your responses with pro/cons of each approach or
> >>> any
> >>>>>> other
> >>>>>>>>> approach. Please be clear which approach you will pick while
> >>> still
> >>>>>>>> giving
> >>>>>>>>> pros/cons of both approaches.
> >>>>>>>>>
> >>>>>>>>> Thanks.
> >>>>>>>>> Sankalp
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> --
> >>>>>>> Jon Haddad
> >>>>>>> http://www.rustyrazorblade.com
> >>>>>>> twitter: rustyrazorblade
> >>>>>>
> >>>>>>
> >>>>>>
> ---------------------------------------------------------------------
> >>>>>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
> >>>>>> For additional commands, e-mail: dev-h...@cassandra.apache.org
> >>>>>>
> >>>>>>
> >>>>
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
> >>>> For additional commands, e-mail: dev-h...@cassandra.apache.org
> >>>>
> >>>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
> > For additional commands, e-mail: dev-h...@cassandra.apache.org
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
> For additional commands, e-mail: dev-h...@cassandra.apache.org
>
> --

Muru

Reply via email to