+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