+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
>

Reply via email to