Skip to content

[SFN] basic version of stepfunctions v2#7464

Merged
dominikschubert merged 28 commits intomasterfrom
MEP-stepfunctions-init
Feb 13, 2023
Merged

[SFN] basic version of stepfunctions v2#7464
dominikschubert merged 28 commits intomasterfrom
MEP-stepfunctions-init

Conversation

@MEPalma
Copy link
Contributor

@MEPalma MEPalma commented Jan 9, 2023

Introduces initial efforts on stepfunctions v2 provider. Enable with PROVIDER_OVERRIDE_STEPFUNCTIONS=v2. Please refer to knowledge-base for an overview of these changes.

@MEPalma MEPalma self-assigned this Jan 9, 2023
@MEPalma MEPalma temporarily deployed to localstack-ext-tests January 9, 2023 20:30 — with GitHub Actions Inactive
@github-actions
Copy link

github-actions bot commented Jan 9, 2023

LocalStack integration with Pro

       3 files  ±  0         3 suites  ±0   1h 28m 59s ⏱️ + 4m 28s
1 703 tests +25  1 346 ✔️ ±0  357 💤 +25  0 ±0 
2 415 runs  +25  1 720 ✔️ ±0  695 💤 +25  0 ±0 

Results for commit c491303. ± Comparison against base commit b164a71.

♻️ This comment has been updated with latest results.

@MEPalma MEPalma temporarily deployed to localstack-ext-tests January 10, 2023 21:27 — with GitHub Actions Inactive
@MEPalma MEPalma temporarily deployed to localstack-ext-tests January 11, 2023 15:36 — with GitHub Actions Inactive
@MEPalma MEPalma temporarily deployed to localstack-ext-tests January 11, 2023 15:40 — with GitHub Actions Inactive
@MEPalma MEPalma temporarily deployed to localstack-ext-tests January 12, 2023 20:34 — with GitHub Actions Inactive
@MEPalma MEPalma changed the title [stepfunctions] Rework [SFN] V2 Init Jan 12, 2023
@MEPalma MEPalma temporarily deployed to localstack-ext-tests January 16, 2023 07:14 — with GitHub Actions Inactive
@MEPalma MEPalma marked this pull request as ready for review January 16, 2023 07:14
@MEPalma MEPalma temporarily deployed to localstack-ext-tests January 16, 2023 07:16 — with GitHub Actions Inactive
@MEPalma MEPalma temporarily deployed to localstack-ext-tests January 16, 2023 12:02 — with GitHub Actions Inactive
Copy link
Member

@thrau thrau left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's really great to see our own implementation of stepfunctions taking shape! 👏 looking forward to learning more about the concepts introduced in the PR

@MEPalma, could you add a bit of explanation for people who aren't too familiar with stepfunctions and antrl. how is antlr used in this, is it a build or a runtime dependency? is there any type of architecture diagram that gives me a basic understanding of how this works? i'd love to test it a bit to learn more :-)

@alexrashed
Copy link
Member

FYI: The failing test seemed to be a bit flaky. It went green after I retriggered the build.

@MEPalma MEPalma temporarily deployed to localstack-ext-tests February 1, 2023 09:02 — with GitHub Actions Inactive
@MEPalma MEPalma temporarily deployed to localstack-ext-tests February 1, 2023 09:06 — with GitHub Actions Inactive
@MEPalma MEPalma temporarily deployed to localstack-ext-tests February 1, 2023 12:34 — with GitHub Actions Inactive
@MEPalma MEPalma temporarily deployed to localstack-ext-tests February 1, 2023 14:09 — with GitHub Actions Inactive
@MEPalma MEPalma temporarily deployed to localstack-ext-tests February 1, 2023 14:23 — with GitHub Actions Inactive
@MEPalma MEPalma temporarily deployed to localstack-ext-tests February 1, 2023 15:28 — with GitHub Actions Inactive
@MEPalma MEPalma temporarily deployed to localstack-ext-tests February 1, 2023 16:44 — with GitHub Actions Inactive
Copy link
Member

@dominikschubert dominikschubert left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a few comments, most of those were discussed in our last sync 👍

Copy link
Member

@whummer whummer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Absolutely amazing and massive set of changes @MEPalma ! 🚀 🚀

As we briefly discussed (also with @dominikschubert ), the ANTLR based lexer/parser implementation is really sophisticated - kudos for pulling off such an advanced implementation. (Maybe you've not chosen the easiest route with this approach, ;) but still impressive to see how you've come up with this e2e implementation!).

Added a few smaller comments and suggestions, but nothing that should really block the initial merge. This is a great foundation that will allow us to iterate on the new SFn provider - can't wait to see it in action and replacing the old provider (which effectively we can no longer upgrade as it has become so bloated in the meantime). Great job! 💪 🥳

@@ -0,0 +1,21 @@
import threading
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minor: Wondering if we could create a cleaner separation between the ASL language artifacts (incl. grammar, lexer, parser, and generated code), and the execution runtime. Currently, the concepts are a bit interwoven in the code structure.

It seems like a first quick win could be to pull out the stepfunctions.asl.eval module out into a stepfunctions.runtime module - which would more cleanly separate the concepts.

Copy link
Contributor Author

@MEPalma MEPalma Feb 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excellent point. In ext we have an iteration of this project which separated components into Components and Evaluation. This seems similar to the idea you mention here.

Evaluation component used to decorate Components, thereby separating the two aspects. As the Components abstraction appeared to duplicate ANTLR's 'nodes' abstraction, and given the added amount of files it involved (2 per component) and verbose code (constructors mainly), the decision was made to have EvalComponents extend Components. Another minor aspect to address in that setup was how some Components do not require an evaluation logic, but are members of other Components.

I still second the idea of having this separation, but I see how this would require a more careful design first.

With the exception of utils files all in stepfunctinos.asl is eval/runtime code.

@MEPalma MEPalma temporarily deployed to localstack-ext-tests February 6, 2023 09:52 — with GitHub Actions Inactive
@MEPalma MEPalma requested review from giograno and thrau February 6, 2023 09:52
@thrau thrau removed their request for review February 6, 2023 16:50
Copy link
Member

@whummer whummer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for addressing all the comments. 🚀 LGTM, but will let @dominikschubert @giograno do the final sign-off.. 👍

Copy link
Member

@dominikschubert dominikschubert left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes since last review LGTM

All good for an initial merge from my side 👍

@dominikschubert dominikschubert merged commit 204e605 into master Feb 13, 2023
@whummer whummer deleted the MEP-stepfunctions-init branch February 13, 2023 13:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants