Github user mhfrantz commented on the pull request:
https://github.com/apache/incubator-tinkerpop/pull/60#issuecomment-102105037
I'm looking in more detail at how `RangeGlobalStep` works. It seems there
are a few places where this exact step is a special case (via `instanceof`
checks, e.g. in `TraverserMapReduce` as well as in several strategies).
The way that `Bypassing` is used also has to be considered.
I also see that `ComputerVerificationStrategy` looks for specific types of
steps, and `TailGlobalStep` might belong there.
It feels like some refactoring is warranted. `RangeGlobalStep` and
`CollectingBarrierStep` each represent some class of steps to which
`TailGlobalStep` may or may not belong. Perhaps `Bypassing` is one such
aspect, but are there others?
Maybe `TailGlobalStep` is really a new animal, but it feels like it ought
to be composed from pieces that mean "it is like a barrier, but not exactly
CollectingBarrierStep" and "it is like a range, but not exactly
RangeGlobalStep".
I'm still coming up to speed on the design, and I'm not yet totally lost,
but any pointers would be appreciated. I can appreciate the tension between a
fully a generalized "step aspects" API and one that assumes that the number of
fundamental steps is small and so will scale with special case logic.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---