[Gluster-devel] RFC: Gluster.Next: Where and how DHT2 work/code would be hosted
Shyam
srangana at redhat.com
Fri Oct 30 00:42:47 UTC 2015
On 10/29/2015 07:29 PM, Jeff Darcy wrote:
> On October 29, 2015 at 9:12:46 AM, Shyam (srangana at redhat.com) wrote:
>> Will code that NSR puts up in master be ready to ship when 3.8 is
>> branched?
>
> Do we know when 3.8 will be branched?
This is an example not absolute, what I mean is when the next release is
made.
>
>> I ask the above, as I think we need a *process*, and not an open ended
>> "put it where you want option", for the following reasons, - Something
>> that ships experimental is not to be consumed in production, so till
>> the point an/any effort is ready it can be housed in experimental - It
>> is not about how much of infra code is impacted, or how much code
>> would change, it is about readiness of the functionality
>
> I disagree. From an operational perspective, unavoidable impact (not
> just on infrastructure but on any existing functionality) is *the* thing
> we want to avoid. Experimental code that sits on disk, but isn’t even
> loaded into memory without an explicit request to enable it, carries
> little risk. Experimental code that’s loaded and executed every time
> Gluster is run carries more risk, even if it’s just one line.
I assume this is about infra changes (as the first 2 points are for some
reason squashed in my reader). I think what you state is infra (or other
non-experimental) code impact due to changes by experimental/inprogress
code, should be dealt with clearly and carefully so as to not impact
regular functionality. In which case I *agree* and do not mean otherwise.
I think this sort of goes back to what Niels commented on my squashing a
.patch and proposed using #define EXPERIMENTAL in this thread (or such
methods).
>
>> - The intention is also to keep such WIP xlators segregated in master
>> - It is easy to control the "don't build/ship" directive for
>> everything under experimental, rather than make these decisions at a
>> per directory/xlator/module level
>
> They’re likely to make those decisions at the finer granularity anyway.
> Most people will probably only want to try out one experimental
> translator at a time. Making them edit two makefiles (to enable
> “experimental” and then a specific translator within it) instead of just
> one doesn’t seem to get us very far. Either way they’ll have to edit
> the specfile, and they’ll see a list of all the experimental translators
> they could enable.
>
>> - It is a clear message for anyone picking up these pieces to deploy
>> and play with etc.
>
> If having to edit makefiles and specfiles by hand isn’t enough, there
> are other things we could do to send such a clear message. For example,
> we could require a special configure flag or glusterd startup option to
> enable management support for experimental features - not just whole
> translators but options within existing translators as well.
>
>> Coming to DHT2, irrespective of reason (1) above, all other reasons
>> for which NSR can stay outside of experimental holds good for DHT2 as
>> well.
>
> Perhaps. I think that’s pretty clearly true for the DHT2 translator
> itself. For the associated posix changes it’s less clearly true, but
> the modified version could go in storage/posix2 as easily as
> experimental/posix or experimental/posix2.
Yes, posix2 is where the new posix code would land, hence the comment on
DHT2 being mostly similar in nature.
>
> IMO the main reason to have an “experimental” directory is one not
> mentioned yet - to put them in a separate RPM. This is not the same as
> your “don’t build/ship” point above because they’ll get *built* anyway.
I think I should word my response more clearly, as "don't build/ship" is
taken literally.
The choice of experimental as a separate entity, makes some of the
choices presented below easier to implement/follow IMHO, which is what I
am getting at.
Another thing I am getting at is, we *should* define a clear way to do
such things, and not leave it open ended, which is where we seem to be
headed below.
> They’ll just be separately installable - or not, for people who aren’t
> interested in experimental code. Then we could combine that with the
> special glusterd startup option mentioned above to make the wole process
> of enabling or disabling experimental translators pretty seamless.
> Install the RPM, tweak the option, and you can use experimental code.
> Otherwise you can’t, and you get a nice clear error message if you try.
>
>
> So, here's what I think we should do (right now - subject to change).
>
> 1. We should create an "experimental" directory, and update makefiles
> accordingly.
I am going to point back to the patch around this here, as it contains a
README as well, which we can put these specifics into,
http://review.gluster.org/#/c/12321/2
We can further that, or create a new one, I am fine either way.
>
> 2. The main Gluster 4.0 translators - dht2+posix, nsr* - should go into
> the experimental directory and the specfile should put those
> translators into a new RPM.
>
> 3. All experimental functionality, whether in its own translator or
> otherwise, should be controlled by an option which is off by
> default.
Ah! I think this is something akin to the "#define EXPERIMENTAL"
suggestion and non-experimental code impact I guess, right?
>
> 4. Configuring an experimental feature should require a special
> glusterd flag (plus installation of the experimental RPM).
>
More information about the Gluster-devel
mailing list