While I would love to use a different build system (e.g. gradle) for the sidecar, I agree with Dinesh that a separate repo would make sidecar development much harder to verify, especially on the testing and compatibility front. As Jeremiah mentioned we can always choose later to release the sidecar artifact separately or more frequently than the main server regardless of repo choice and as per Roopa's point having a separate release artifact (jar or deb/rpm) is probably a good idea until the default Cassandra packages don't automatically stop and start Cassandra on install.
While we were developing the repair scheduler in a separate repo we had a number of annoying issues that only started surfacing once we started merging it directly into the trunk tree: 1. It is hard to compile/test against unreleased versions of Cassandra (e.g. the JMX interfaces changed a lot with 4.x, and it was pretty tricky to compile against that as the main project doesn't release nightly snapshots or anything like that, so we had to build local trunk jars and then manually dep them). 2. Integration testing and cross version compatibility is extremely hard. The sidecar is going to be involved in multi node coordination (e.g. monitoring, metrics, maintenance) and will be tightly coupled to JMX interface choices in the server and trying to make sure that it all works with multiple versions of Cassandra is much harder if it's a separate repo that has to have a mirroring release cycle to Cassandra. It seems much easier to have it in tree and just be like "the in tree sidecar is tested against that version of Cassandra". Every time we cut a Cassandra server branch the sidecar branches with it. We experience these pains all the time with Priam being in a separate repo, where every time we support a new Cassandra version a bunch of JMX endpoints break and we have to refactor the code to either call JMX methods by string or cut a new Priam branch. A separate artifact is pretty important, but a separate repo just allows drifts. Furthermore from the Priam experience I also don't think it's realistic to say one version of a sidecar artifact can actually support multiple versions. -Joey On Fri, Aug 17, 2018 at 12:00 PM Jeremiah D Jordan <jerem...@datastax.com> wrote: > Not sure why the two things being in the same repo means they need the > same release process. You can always do interim releases of the management > artifact between server releases, or even have completely decoupled > releases. > > -Jeremiah > > > On Aug 17, 2018, at 10:52 AM, Blake Eggleston <beggles...@apple.com> > wrote: > > > > I'd be more in favor of making it a separate project, basically for all > the reasons listed below. I'm assuming we'd want a management process to > work across different versions, which will be more awkward if it's in tree. > Even if that's not the case, keeping it in a different repo at this point > will make iteration easier than if it were in tree. I'd imagine (or at > least hope) that validating the management process for release would be > less difficult than the main project, so tying them to the Cassandra > release cycle seems unnecessarily restrictive. > > > > > > On August 17, 2018 at 12:07:18 AM, Dinesh Joshi > > (dinesh.jo...@yahoo.com.invalid) > wrote: > > > >> On Aug 16, 2018, at 9:27 PM, Sankalp Kohli <kohlisank...@gmail.com> > wrote: > >> > >> I am bumping this thread because patch has landed for this with repair > functionality. > >> > >> I have a following proposal for this which I can put in the JIRA or doc > >> > >> 1. We should see if we can keep this in a separate repo like Dtest. > > > > This would imply a looser coupling between the two. Keeping things > in-tree is my preferred approach. It makes testing, dependency management > and code sharing easier. > > > >> 2. It should have its own release process. > > > > This means now there would be two releases that need to be managed and > coordinated. > > > >> 3. It should have integration tests for different versions of Cassandra > it will support. > > > > Given the lack of test infrastructure - this will be hard especially if > you have to qualify a matrix of builds. > > > > Dinesh > > --------------------------------------------------------------------- > > 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 > >