+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

Reply via email to