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