METRON-877 Extract core implementation and UDF support, create metron-stellar module#616
METRON-877 Extract core implementation and UDF support, create metron-stellar module#616mattf-apache wants to merge 6 commits intoapache:masterfrom
Conversation
… to be built into metron-common uber-jar.
|
So, the test plan for this is...? The test work etc? |
|
So we have a StatefulExecutor, is there an idea that there will be more types of executors? Will there be a non-stateful executor, maybe for performance reasons or other use cases? Maybe in the future some write up on this would help with the intent |
|
As a more stand alone module, I think the readme should be broken down a little bit, instead of just being 'here is the language'. A top level statement document, with what stellar is at a high level, why it exists and when it has value to be used. I wouldn't hold this PR up for this, but maybe it should be added to the follow on list. |
|
Each example could be the seed of future development of encapsulating that functionality. For example - how to use stellar in spark could be evolved into a stellar-spark integration package. |
|
|
@ottobackwards , thanks very much for tackling this admittedly large review.
"For a general test plan for all Stellar functionality within Metron, please see #468 's test plan."
The base executor is org.apache.metron.stellar.common.BaseStellarProcessor, formerly org.apache.metron.common.stellar.BaseStellarProcessor. It parses and evaluates Stellar expressions, with caching of the parse, and with given context (variables), variableResolver, and functionResolver. It can return any Stellar data type. It also provides a validate() method. The "stateful" executor, org.apache.metron.stellar.common.StellarStatefulExecutor, assists with Aggregators, where state needs to persist across multiple invocations of the same entity, and in fact was formerly located at org.apache.metron.profiler.stellar.StellarExecutor. It was renamed when I relocated it, to avoid conflict with the Shell executor, org.apache.metron.stellar.common.shell.StellarExecutor, which is significantly different. I deemed the stateful executor to be Stellar functionality rather than Profiler, and moved it. The Aggregator functions will also be moved into Stellar, but that will be in Step 3, which will be a different PR. I agree in future it would be nice to have design documents, for Stellar and other parts of Metron.
Yah, that would be good. I've opened METRON-998, as a follow-on task.
Since this started as a regular PR, I'd like to finish this one that way. But I agree, before starting Part 3 I'll petition to create a feature branch for the next set(s) of work. |
|
Thanks Matt, I think your write up above should be captured somewhere... We don't want to lose it in the PR |
|
Hi @ottobackwards , I've captured those two paragraphs in a new section of the GoogleDoc, titled "Design Observations". |
|
@ottobackwards , is the "1" above a +1? |
|
Yes, sorry. |
|
Ah, yes, I do want that. Sorry! |
|
+1 by inspection, this is great work, @mattf-horton |
|
so can this be merged? |
|
Thanks, @ottobackwards and @cestella ! |
|
super! great work @mattf-horton |
|
This has been committed to git-wip-us.apache.org/repos/asf/metron. Propagation seems a little slow today. |
Contributor Comments
It appears that github permanently closes any PR that gets rebased, hence for the history and discussion to date, I can only point you at the previous incarnation of this PR: #610
The design document has been available for some time at https://docs.google.com/document/d/1EP7Jt4ePHe2A-_oboLl2QbN1muh7uKeET_kbpIgjcJM/edit#
I have now added a new section, starting on p. 7, titled "Retrospective: Changes made for Parts 1 & 2" that details the specific changes actually done in this PR to extract Stellar.
Pull Request Checklist
In order to streamline the review of the contribution we ask you follow these guidelines and ask you to double check the following:
For all changes:
For code changes:
The intent of these changes is to achieve an architecture change WITHOUT any functional change. The continued working of all unit tests, integration tests and real-world applications should result. In addition, it generates (in metron-stellar/stellar-common/target) a stellar-common uber-jar (including all dependencies), which among other things can run the Stellar shell as a stand-alone Java application (although missing those Stellar functions that remain as part of Metron):
For testing within Metron, the stellar classes are still incorporated into the metron-common jar and RPM, so test installation should work as before.
For a general test plan for all Stellar functionality within Metron, please see #468 's test plan.
Have you included steps to reproduce the behavior or problem that is being changed or addressed?
Have you included steps or a guide to how the change may be verified and tested manually?
Have you ensured that the full suite of tests and checks have been executed in the root incubating-metron folder via:
Have you written or updated unit tests and or integration tests to verify your changes?
If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?
[IN PROCESS] Have you verified the basic functionality of the build by building and running locally with Vagrant full-dev environment or the equivalent?
For documentation related changes: