Hi Clebert, I've run the full set of test suites with these changes to passing tests.
I'm happy to expand upon unit testing of course. On Tue, Nov 27, 2018 at 3:53 PM Clebert Suconic <clebert.suco...@gmail.com> wrote: > > I'm getting too old now to realize that the most expensive thing in > *any* messaging system is testing. > I know you could say this to any system, but in messaging in general > this is prominent. > > So, I'm not too concerned with the change itself as I am with the > amount of testing done. I have seen many cases where trusting the > testsuite alone was not enough. > > > So, as long as you make enough of tests (running the whole testsuite > and guaranteeing no regressions is the minimal) and run lots of > prodction like tests... it should be fine. > > > - Agua mole, pedra dura, tanto bate ate que fura > * Random Brazilian saying, just because it seems nice to answer with > poetry on this thread. > > On Tue, Nov 27, 2018 at 10:34 AM Jamie G. <jamie.goody...@gmail.com> wrote: > > > > Hi Gary, > > > > To address your concerns: > > > > 1. The code is being cleaned up, not completely rewritten. This is > > making it easier to maintain over the monolithic classes. It's also > > why it was brought to the community… to review it and be sure the > > changes are just cleaning it up. There was no intent to change the > > logic for the reason that you suggested. > > > > 2. I answered above, its easy on the back port as we can just make it > > a part of 5.15.9 (too my understanding the community supports master > > and the last release branch). There are little differences between 16 > > and 15.9 in the KahaDB realm. So placing it in 15.9 does not change > > any way it operates or works. It only cleans up the readability of > > the code. > > > > > > "A dream you dream alone is only a dream. A dream you dream together > > is reality." > > > > ― John Lennon > > > > > > Cheers, > > Jamie > > On Tue, Nov 27, 2018 at 8:29 AM Gary Tully <gary.tu...@gmail.com> wrote: > > > > > > Hi Jamie G, > > > There are a few trade offs to consider: > > > 1) those familiar with the code will have to reacquaint themselves > > > with anything that is refactored > > > 2) backporting fixes will be more difficult when the code structure > > > changes > > > > > > Of the two, I think #2 is more critical. > > > > > > On #1: > > > context builds up over time and code structure is an integral part of > > > that, for better or for worse. > > > Switching context is not something us humans like doing, most > > > especially when stability is a key concern. > > > > > > Refactoring with purpose (for a new feature) can be great, doing it at > > > this stage for readability may be less great. > > > > > > Mr. W. B. Yeats put it nicely: "tread softly because you tread on my > > > dreams" > > > > > > s/dreams/mental model/ > > > On Mon, 26 Nov 2018 at 19:44, Christopher Shannon > > > <christopher.l.shan...@gmail.com> wrote: > > > > > > > > I didn't say I definitely wouldn't support it but I just want to make > > > > sure > > > > we are careful and the benefits of the refactor (in this case improved > > > > maintainability) are really going to be worth the risk specifically > > > > because > > > > of the component being touched. Too often things get committed and then > > > > issues are uncovered with the patch later that were missed. > > > > > > > > Some parts of the broker are critical and this is one of them because a > > > > bug > > > > that corrupts a store could lead to losing lots of production data > > > > which is > > > > a very different type of bug than a random web console bug or transport > > > > error that just causes an error with a single client or with a single > > > > message. Granted the risk of a critical bug being introduced with a > > > > refactor like this is not very high but if there is one it could have > > > > pretty bad consequences. > > > > > > > > Now all that being said ... as long as we are careful to make sure all > > > > tests pass and have a few people thoroughly review it (such as Gary who > > > > has > > > > the most experience out of anyone in KahaDB) then I would +1 the change > > > > for > > > > a 5.16.0 release. > > > > > > > > On Mon, Nov 26, 2018 at 2:07 PM Arthur Naseef <a...@amlinv.com> wrote: > > > > > > > > > Improving the existing code is a great goal. > > > > > > > > > > While cleaning up code is nice KahaDB has gotten pretty stable over > > > > > the > > > > > > years and doing a bunch of refactoring just opens it up to new bugs > > > > > > that > > > > > > have to be fixed. Fixing bugs is not a problem however I tend to > > > > > > be more > > > > > > sensitive to store related changes because of the possible data > > > > > > loss or > > > > > > corruption issues to production data that can occur from store bugs > > > > > > vs > > > > > some > > > > > > other random bug in the broker. > > > > > > > > > > > > > > > > I understand the desire to avoid the risk of introducing bugs. > > > > > However, as > > > > > long as the project is active and maintained, that really isn't a > > > > > valid > > > > > approach to its maintenance overall. > > > > > > > > > > So that leads us to the question of risk mitigation. Build-time > > > > > tests are > > > > > an industry standard, and ActiveMQ certainly has a large number of > > > > > such > > > > > tests. Code reviews are another best-practice, and there are multiple > > > > > individuals looking at these code changes now. More are always > > > > > welcome, > > > > > and access is certainly not a problem! > > > > > > > > > > If there are specific concerns within the code changes, let's discuss > > > > > them. It'll be great to have actual technical discussions! > > > > > > > > > > As for the concern that this is the broker's storage, similar > > > > > arguments > > > > > could be made for just about any part of the code. Reliable handling > > > > > of > > > > > messages is ActiveMQ's core benefit to its users. > > > > > > > > > > > > > > > > > > > > > FWIW, the current community goal is for ActiveMQ Artemis to become > > > > > ActiveMQ > > > > > > > > > > 6.x when acceptable feature parity is reached (which is actively being > > > > > > worked on). > > > > > > > > > > > > > > > > Whether Artemis will eventually become ActiveMQ 6.x is not pertitent > > > > > to > > > > > this discussion. Let's not open that discussion as part of this > > > > > technical > > > > > code conversation. > > > > > > > > > > Making the existing code base, which has heavy usage in the industry, > > > > > more > > > > > maintainable is always a good goal to achieve. And having more folks > > > > > in > > > > > the community engaging in working on the project can only benefit the > > > > > entire community regardless of the long-term destination. > > > > > > > > > > Art > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Nov 26, 2018 at 10:22 AM Justin Bertram <jbert...@apache.org> > > > > > wrote: > > > > > > > > > > > FWIW, the current community goal is for ActiveMQ Artemis to become > > > > > ActiveMQ > > > > > > 6.x when acceptable feature parity is reached (which is actively > > > > > > being > > > > > > worked on). > > > > > > > > > > > > > > > > > > Justin > > > > > > > > > > > > > > > > > > On Mon, Nov 26, 2018 at 11:01 AM Jamie G. <jamie.goody...@gmail.com> > > > > > > wrote: > > > > > > > > > > > > > The idea here is to ensure that it’s development and maintenance > > > > > > > moving forward is easier as we work to make it better in the > > > > > > > future. > > > > > > > > > > > > > > KahaDB currently has massive classes (KahaDBStore, > > > > > > > MessageDatabase) > > > > > > > and code base and is extremely hard to follow. My desire to do > > > > > > > this > > > > > > > was to make this so we could make the continued maintenance > > > > > > > easier and > > > > > > > also make it more inviting to improvements. The unit tests all > > > > > > > pass, > > > > > > > so as long as we have a good solid testing coverage, the risks > > > > > > > are not > > > > > > > huge. If a bug appears to be introduced, than we may have > > > > > > > uncovered a > > > > > > > testing hole - finding these is a good thing. > > > > > > > > > > > > > > Since we are going to continue to support ActiveMQ moving forward, > > > > > > > it’s a good idea to make it more maintainable. My motivation to > > > > > > > doing > > > > > > > this was spurred by the recent JIRAs surrounding KahaDB I helped > > > > > > > out > > > > > > > upon. I really believe this is a good improvement to help moving > > > > > > > ActiveMQ forward. > > > > > > > On Mon, Nov 26, 2018 at 12:33 PM Christopher Shannon > > > > > > > <christopher.l.shan...@gmail.com> wrote: > > > > > > > > > > > > > > > > I'm not really sure this is worthwhile or something we want to > > > > > > > > do...I > > > > > > > would > > > > > > > > have to think about it more before I gave it a +1. > > > > > > > > > > > > > > > > While cleaning up code is nice KahaDB has gotten pretty stable > > > > > > > > over > > > > > the > > > > > > > > years and doing a bunch of refactoring just opens it up to new > > > > > > > > bugs > > > > > > that > > > > > > > > have to be fixed. Fixing bugs is not a problem however I tend > > > > > > > > to be > > > > > > more > > > > > > > > sensitive to store related changes because of the possible data > > > > > > > > loss > > > > > or > > > > > > > > corruption issues to production data that can occur from store > > > > > > > > bugs > > > > > vs > > > > > > > some > > > > > > > > other random bug in the broker. > > > > > > > > > > > > > > > > On Sun, Nov 25, 2018 at 11:59 PM Jean-Baptiste Onofré < > > > > > j...@nanthrax.net > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > OK, got it. It's more a syntax/codebase organization > > > > > > > > > refactoring. > > > > > > > > > > > > > > > > > > If there's no impact on the behavior and features, +1 from my > > > > > > > > > side. > > > > > > > > > > > > > > > > > > Regards > > > > > > > > > JB > > > > > > > > > > > > > > > > > > On 25/11/2018 21:21, Jamie G. wrote: > > > > > > > > > > Initially its to make KahaDB classes easier to read & > > > > > > > > > > maintain. > > > > > > > > > > Eventually it will help in features/performance; smaller > > > > > > > > > > classes > > > > > > are > > > > > > > > > > easier to grok, easier to see improvements. > > > > > > > > > > > > > > > > > > > > Instead of trying to refactor all of it in one go, I'm > > > > > > > > > > taking the > > > > > > > > > > approach of one area at a time. > > > > > > > > > > > > > > > > > > > > One pass for breaking out objects. > > > > > > > > > > Another pass for small functional improvements. > > > > > > > > > > Perhaps future passes for new Java features (bring all code > > > > > > > > > > up to > > > > > > > Java > > > > > > > > > > 8 perhaps?). > > > > > > > > > > > > > > > > > > > > On Sun, Nov 25, 2018 at 4:32 PM Jean-Baptiste Onofré < > > > > > > > j...@nanthrax.net> > > > > > > > > > wrote: > > > > > > > > > >> > > > > > > > > > >> Hi Jamie, > > > > > > > > > >> > > > > > > > > > >> That's interesting. > > > > > > > > > >> > > > > > > > > > >> What's the rationale behind the refactoring ? New features > > > > > > > > > >> or > > > > > perf > > > > > > > > > >> improvements ? > > > > > > > > > >> > > > > > > > > > >> Regards > > > > > > > > > >> JB > > > > > > > > > >> > > > > > > > > > >> On 25/11/2018 20:16, Jamie G. wrote: > > > > > > > > > >>> Hi All, > > > > > > > > > >>> > > > > > > > > > >>> I've taken some time to prototype a refactored KahaDBStore > > > > > class: > > > > > > > > > >>> https://github.com/jgoodyear/activemq/tree/KahaDBRefactor > > > > > > > > > >>> > > > > > > > > > >>> As KahaDBStore exists in Master, it contains 7 internal > > > > > classes, > > > > > > > over > > > > > > > > > >>> some 1677 lines of code. > > > > > > > > > >>> > > > > > > > > > >>> In my refactor branch I've separated out those classes > > > > > > > > > >>> into > > > > > their > > > > > > > own > > > > > > > > > >>> files, and applied some gentle clean code practices to > > > > > > > > > >>> help > > > > > make > > > > > > > these > > > > > > > > > >>> files easier to read and maintain. > > > > > > > > > >>> > > > > > > > > > >>> I'd like to gather feed back from the community; I've > > > > > > > > > >>> taken > > > > > care > > > > > > to > > > > > > > > > >>> change functionality as little as possible - the aim here > > > > > > > > > >>> is to > > > > > > > reduce > > > > > > > > > >>> complexity and improve maintainability. If the community > > > > > > > > > >>> feels > > > > > > > this is > > > > > > > > > >>> a worth while goal than I'll open a card on Jira & > > > > > > > > > >>> prepare a > > > > > PR. > > > > > > > > > >>> > > > > > > > > > >>> Notes: > > > > > > > > > >>> ActiveMQ KahaDB Store and ActiveMQ-Unit-Tests suites > > > > > > > > > >>> remain > > > > > > > passing > > > > > > > > > >>> after refactor. > > > > > > > > > >>> > > > > > > > > > >>> Cheers, > > > > > > > > > >>> Jamie > > > > > > > > > >>> > > > > > > > > > >> > > > > > > > > > >> -- > > > > > > > > > >> Jean-Baptiste Onofré > > > > > > > > > >> jbono...@apache.org > > > > > > > > > >> http://blog.nanthrax.net > > > > > > > > > >> Talend - http://www.talend.com > > > > > > > > > > > > > > > > > > -- > > > > > > > > > Jean-Baptiste Onofré > > > > > > > > > jbono...@apache.org > > > > > > > > > http://blog.nanthrax.net > > > > > > > > > Talend - http://www.talend.com > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > Clebert Suconic