Maybe this is worth a confluence entry, not as a guide, but just to document what you did.
On November 15, 2018 at 19:07:40, Michael Miklavcic ( michael.miklav...@gmail.com) wrote: Ok, this is finally merged! Whew! Here's how I polished up the history at the end. I used other feature branch merges as a guideline around commit messaging. * fcd644ca 2018-11-15 | METRON-1834: Migrate Elasticsearch from TransportClient to new Java REST API (mmiklavc via mmiklavc) (HEAD -> master, origin/master, origin/HEAD, master-merge) [mmiklavc] |\ | * 8bf3b6ec 2018-11-15 | METRON-1834: Migrate Elasticsearch from TransportClient to new Java REST API (mmiklavc via mmiklavc) closes apache/metron#1242 (stella-es-base2) [mmiklavc] | * e7e19fbb 2018-10-08 | METRON-1834: Migrate Elasticsearch from TransportClient to new Java REST API (cstella via mmiklavc) [cstella] * | 0c4c622b 2018-11-14 | METRON-1749 Update Angular to latest release in Management UI (sardell via nickwallen) closes apache/metron#1217 [sardell] On Thu, Nov 15, 2018 at 4:29 PM Michael Miklavcic < michael.miklav...@gmail.com> wrote: > Absolutely, that's part of what I did to validate. This output below also > exactly matches the diff I get when I run it from the raw PR branch. > > git diff master --stat > Upgrading.md > | 7 +++ > dependencies_with_url.csv > | 2 + > metron-deployment/Kerberos-manual-setup.md > | 154 > ++--------------------------------------------------- > > metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-env.xml > | 9 ---- > > metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/metron_service.py > | 2 - > > metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py > | 3 +- > > metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/themes/metron_theme.json > | 10 ---- > > metron-interface/metron-rest/src/main/java/org/apache/metron/rest/service/impl/MetaAlertServiceImpl.java > | 2 +- > metron-platform/elasticsearch-shaded/pom.xml > | 47 > +++------------- > > metron-platform/elasticsearch-shaded/src/main/resources/META-INF/log4j-provider.properties > | 18 ------- > metron-platform/metron-common/README.md > | 48 > +++++++++-------- > metron-platform/metron-common/src/main/config/zookeeper/global.json > | 1 - > > metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/ConfigOption.java > | 7 +++ > metron-platform/metron-elasticsearch/README.md > | 45 > +++++++++++++++- > metron-platform/metron-elasticsearch/pom.xml > | 32 > +++++------ > > metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/client/ElasticsearchClient.java > | 245 > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/client/ElasticsearchClientFactory.java > | 189 > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/config/ElasticsearchClientConfig.java > | 187 > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/config/ElasticsearchClientOptions.java > | 60 +++++++++++++++++++++ > > metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/dao/ElasticsearchColumnMetadataDao.java > | 101 ++++++++++++++--------------------- > > metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/dao/ElasticsearchDao.java > | 21 ++++---- > > metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/dao/ElasticsearchMetaAlertDao.java > | 2 +- > > metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/dao/ElasticsearchMetaAlertSearchDao.java > | 6 ++- > > metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/dao/ElasticsearchMetaAlertUpdateDao.java > | 4 +- > > metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/dao/ElasticsearchRequestSubmitter.java > | 13 ++--- > > metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/dao/ElasticsearchRetrieveLatestDao.java > | 28 +++++----- > > metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/dao/ElasticsearchSearchDao.java > | 19 ++----- > > metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/dao/ElasticsearchUpdateDao.java > | 19 +++---- > > metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/utils/ElasticsearchUtils.java > | 182 > +++++++------------------------------------------------------- > > metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/utils/FieldMapping.java > | 32 +++++++++++ > > metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/utils/FieldProperties.java > | 36 +++++++++++++ > > metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/writer/ElasticsearchWriter.java > | 26 ++++----- > > metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchColumnMetadataDaoTest.java > | 59 +++++++++----------- > > metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchDaoTest.java > | 8 ++- > > metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchRequestSubmitterTest.java > | 23 ++++---- > > metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchUpdateDaoTest.java > | 12 +++-- > > metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchMetaAlertIntegrationTest.java > | 9 ++-- > > metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchSearchIntegrationTest.java > | 144 +++++++++++++++++++++++++++++-------------------- > > metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchUpdateIntegrationTest.java > | 2 +- > > metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/integration/components/ElasticSearchComponent.java > | 6 ++- > > metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/metaalert/MetaAlertSearchDao.java > | 4 +- > > metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/dao/metaalert/MetaAlertIntegrationTest.java > | 2 +- > metron-platform/metron-integration-test/src/main/config/zookeeper/global.json > | 2 +- > 43 files changed, 1134 insertions(+), 694 deletions(-) > (END) > > Incidentally, (adding this note for posterity) one of the other weird > results I saw when I did the diff after getting the squashing/merging > working was one duplicated method in an integration test. It was the only > example of this. Not sure why, but I removed the extra method manually and > everything looks good. > > 169 /** > 170 * Add test fields to a template with defined types in case they are > not defined in the sensor template shipped with Metron. > 171 * This is useful for testing certain cases, for example faceting on > fields of various types. > 172 * Template follows this pattern: > 173 * { "mappings" : { "xxx_doc" : { "properties" : { ... }}}} > 174 * @param template - this method has side effects - template is > modified with field mappings. > 175 * @param docType > 176 */ > 177 private static void addTestFieldMappings(JSONObject template, String > docType) { > 178 Map mappings = (Map) template.get("mappings"); > 179 Map docTypeJSON = (Map) mappings.get(docType); > 180 Map properties = (Map) docTypeJSON.get("properties"); > 181 Map<String, String> longType = new HashMap<>(); > 182 longType.put("type", "long"); > 183 properties.put("long_field", longType); > 184 Map<String, String> floatType = new HashMap<>(); > 185 floatType.put("type", "float"); > 186 properties.put("latitude", floatType); > 187 Map<String, String> doubleType = new HashMap<>(); > 188 doubleType.put("type", "double"); > 189 properties.put("score", doubleType); > 190 } > 191 > 192 /** > 193 * Add test fields to a template with defined types in case they are > not defined in the sensor template shipped with Metron. > 194 * This is useful for testing certain cases, for example faceting on > fields of various types. > 195 * @param template > 196 * @param docType > 197 */ > 198 private static void addTestFieldMappings(JSONObject template, String > docType) { > 199 Map mappings = (Map) template.get("mappings"); > 200 Map docTypeJSON = (Map) mappings.get(docType); > 201 Map properties = (Map) docTypeJSON.get("properties"); > 202 Map<String, String> longType = new HashMap<>(); > 203 longType.put("type", "long"); > 204 properties.put("long_field", longType); > 205 Map<String, String> floatType = new HashMap<>(); > 206 floatType.put("type", "float"); > 207 properties.put("latitude", floatType); > 208 Map<String, String> doubleType = new HashMap<>(); > 209 doubleType.put("type", "double"); > 210 properties.put("score", doubleType); > 211 } > > > On Thu, Nov 15, 2018 at 4:21 PM Otto Fowler <ottobackwa...@gmail.com> > wrote: > >> Can you diff the trees to be sure? >> >> >> On November 15, 2018 at 17:52:40, Michael Miklavcic ( >> michael.miklav...@gmail.com) wrote: >> >> So amazingly, this still has results in conflicts, but I am able to >> resolve >> them manually in a sensible fashion. >> git merge -X theirs es-rebased >> CONFLICT (rename/rename): Rename >> >> "metron-interface/metron-config/src/app/rxjs-operators.ts"->"metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/ParserRunnerResults.java" >> in branch "HEAD" rename >> >> "metron-interface/metron-config/src/app/rxjs-operators.ts"->"metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/utils/FieldMapping.java" >> in "stella-es-base2" >> >> So where I landed gives a history like the following: >> * df1195aa 2018-11-15 | METRON-1834: Migrate Elasticsearch from >> TransportClient to new Java REST API (mmiklavc via mmiklavc) closes >> apache/metron#1242 (HEAD -> master-merge) [mmiklavc] >> |\ >> | * 590b3669 2018-11-15 | METRON-1834: Migrate Elasticsearch from >> TransportClient to new Java REST API (mmiklavc via mmiklavc) closes >> apache/metron#1242 (stella-es-base2) [mmiklavc] >> | * a7c7dc28 2018-10-08 | Casey Stella - elasticsearch rest client >> migration base work (stella-es-base) [cstella] >> * | 0c4c622b 2018-11-14 | METRON-1749 Update Angular to latest release in >> Management UI (sardell via nickwallen) closes apache/metron#1217 >> (origin/master, origin/HEAD, master) [sardell] >> ... >> >> I can modify a7c7dc28 commit message as well and hopefully this will be >> good for everyone? >> >> Cheers, >> Mike >> >> >> >> >> On Thu, Nov 15, 2018 at 2:29 PM Justin Leet <justinjl...@gmail.com> >> wrote: >> >> > I took a look at this with Mike a bit, and it seems like it's pretty >> > painful and without a clear way to avoid remerging conflicts. If the >> > latest attempt doesn't work, I'm in favor of getting it in and just >> getting >> > it down to as few commits as reasonably possible. >> > >> > On Thu, Nov 15, 2018 at 4:12 PM Michael Miklavcic < >> > michael.miklav...@gmail.com> wrote: >> > >> > > I'm attempting 1 more option, which would be to do a "git merge >> > > --strategy-option theirs" after having done the commit wrangling in >> the >> > PR >> > > branch. Will reply back with results. >> > > >> > > On Thu, Nov 15, 2018 at 2:02 PM Michael Miklavcic < >> > > michael.miklav...@gmail.com> wrote: >> > > >> > > > Yes, definitely. >> > > > >> > > > On Thu, Nov 15, 2018 at 2:01 PM Casey Stella <ceste...@gmail.com> >> > wrote: >> > > > >> > > >> Can you at least rename your commits to have METRON-1834 prefixing >> > them? >> > > >> On Thu, Nov 15, 2018 at 15:19 Michael Miklavcic < >> > > >> michael.miklav...@gmail.com> >> > > >> wrote: >> > > >> >> > > >> > https://github.com/apache/metron/pull/1242 >> > > >> > >> > > >> > TL;DR >> > > >> > I'd like to discuss the best option to merge METRON-1834 into >> > master. >> > > I >> > > >> > want to propose handling this like a feature branch and merging >> it >> > > >> as-is. >> > > >> > --- >> > > >> > >> > > >> > I'm sure most folks' initial reaction will be some skepticism >> akin >> > to >> > > >> "have >> > > >> > you tried turning it off again," as this was my initial reaction >> as >> > > >> well. >> > > >> > It does not seem like this should be difficult. And I'm hoping >> that >> > > this >> > > >> > may be some esoteric thing on my system, though I believe this >> is a >> > > real >> > > >> > problem. A rather tedious explanation follows of what I've tried >> and >> > > the >> > > >> > problems encountered along the way. What seemed like a really >> simple >> > > >> > problem instead appears to be a bit much for Git to handle >> without >> > > >> > requiring redoing merges and another full round of testing. I'd >> much >> > > >> prefer >> > > >> > to avoid that in this instance. >> > > >> > >> > > >> > This PR is ready to be merged into master. It's recent and very >> > close >> > > to >> > > >> > fully up to date in the branch. Latest master merges cleanly. >> There >> > is >> > > >> an >> > > >> > attribution to Casey Stella for the base point of this PR that I >> > need >> > > to >> > > >> > include when getting this into master. When I created my branch, >> I >> > > >> > collapsed his initial set of commits into a single squashed >> commit >> > on >> > > >> > master at the time, and I started to work from there. Over time, >> I >> > > made >> > > >> a >> > > >> > number of additional commits and merges from master. Now for the >> > > issues. >> > > >> > >> > > >> > Originally, my expectation was that I could have 2 commits - the >> > > >> original >> > > >> > squashed commit from Casey along with all my additional commits >> (and >> > > the >> > > >> > merges with master) right on top. Nice clean history on master. >> > Turns >> > > >> out, >> > > >> > this doesn't work as cleanly as expected because a combination of >> > the >> > > >> > multiple merges and the need to keep the original commit with >> > > >> attribution >> > > >> > to Casey's work. A normal git pull --squash works fine, as >> expected, >> > > >> but we >> > > >> > lose the base commit, and therefore the requisite attribution. >> Here >> > > are >> > > >> > some other things I've tried, to no avail. >> > > >> > >> > > >> > 1. Git pull --squash after a merge with master. This will squash >> > > the >> > > >> > entire tree back to the branch point. No good. >> > > >> > 2. Git rebase -i master. Allows you to cleanly apply changes, but >> > > >> then >> > > >> > it ends up having problems with a clean rebase and shows >> > > conflicts. I >> > > >> > expect this is because of the merge history being necessary. >> > > >> > 3. Checking out a branch from the base point squashed commit from >> > > >> Casey, >> > > >> > and attempt to apply my changes on top. Numerous methods for >> > > >> > squashing/rebasing my changes on top applies nicely in the >> > branch. >> > > >> But >> > > >> > then >> > > >> > it once again causes merge conflicts when I attempt to get this >> > > onto >> > > >> > master. Things I attempted include: manually copying files, >> > > rebasing >> > > >> > all my >> > > >> > commits plus merges on top of the base commit, git merge >> > --squash, >> > > >> > intimidation. >> > > >> > >> > > >> > For one example of the result I'm talking about, this looks >> "good" >> > but >> > > >> it's >> > > >> > missing a ton of recent commits because they get caught up in the >> > > rebase >> > > >> > and get squashed in with my commit. When you attempt to merge >> this >> > > onto >> > > >> > master, it is just plain wrong (see example below with merge >> > > conflicts). >> > > >> > * 22c3b3bc 2018-11-15 | METRON-1834: Migrate Elasticsearch from >> > > >> > TransportClient to new Java REST API (mmiklavc via mmiklavc) >> closes >> > > >> > apache/metron#1242 (HEAD -> stella-es-base2) [mmiklavc] >> > > >> > * 84232e90 2018-10-08 | METRON-1834: Elasticsearch rest client >> > > migration >> > > >> > base work starting point for apache/metron#1242 (cstella via >> > mmiklavc) >> > > >> > [cstella] >> > > >> > * 5bfc08c5 2018-10-08 | METRON-1792 Simplify Profile Definitions >> in >> > > >> > Integration Tests (nickwallen) closes apache/metron#1211 >> > [nickwallen] >> > > >> > >> > > >> > Here's 1 merge conflict (say what??) >> > > >> > CONFLICT (rename/rename): Rename >> > > >> > >> > > >> > >> > > >> >> > > >> > >> "metron-interface/metron-config/src/app/rxjs-operators.ts"->"metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/ParserRunnerResults.java" >> > > >> > in branch "HEAD" rename >> > > >> > >> > > >> > >> > > >> >> > > >> > >> "metron-interface/metron-config/src/app/rxjs-operators.ts"->"metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/utils/FieldMapping.java" >> > > >> > in "stella-es-base2" >> > > >> > >> > > >> > If I attempt to use rebase on master instead of merge, it really >> > seems >> > > >> to >> > > >> > mess up the files. Again, another example where I have TODO's >> that >> > are >> > > >> most >> > > >> > definitely removed by a commit in my branch and also do not >> exist in >> > > >> > master. I'm not sure what's happening here, but I don't trust it. >> > > >> > { >> > > >> > //TODO: It shouldn't require an assertEventually() here as it >> > > >> should >> > > >> > be synchronous. >> > > >> > // Before merging, please figure out why. >> > > >> > TestUtils.assertEventually(() -> Assert.assertEquals(14, >> > > >> > >> dao.getColumnMetadata(Collections.singletonList("snort")).size())); >> > > >> > Map<String, FieldType> fieldTypes = >> > > >> > dao.getColumnMetadata(Collections.singletonList("snort")); >> > > >> > <<<<<<< HEAD >> > > >> > Assert.assertEquals(32, fieldTypes.size()); >> > > >> > Assert.assertEquals(FieldType.KEYWORD, >> > > >> > fieldTypes.get("sig_generator")); >> > > >> > ======= >> > > >> > Assert.assertEquals(FieldType.INTEGER, >> > > >> > fieldTypes.get("snort_field")); >> > > >> > >>>>>>> METRON-1834: Elasticsearch rest client migration base >> work >> > > >> starting >> > > >> > point for apache/metron#1242 (cstella via mmiklavc) >> > > >> > >> > > >> >> > > > >> > > >> > >> >>