[ 
https://issues.apache.org/jira/browse/QUARKS-195?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15337829#comment-15337829
 ] 

ASF GitHub Bot commented on QUARKS-195:
---------------------------------------

GitHub user dlaboss reopened a pull request:

    https://github.com/apache/incubator-quarks/pull/130

    [WIP] [QUARKS-195] Metrics.counter needs TStream.peek(oplet)

    

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/dlaboss/incubator-quarks 
quarks-195-metrics-peek

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/incubator-quarks/pull/130.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #130
    
----
commit 2a96d705b0bad4e0d9fb7ba6348502ab9d9cb241
Author: Dale LaBossiere <[email protected]>
Date:   2016-06-07T18:29:48Z

    [QUARKS-195] Metrics.counter needs TStream.peek(oplet)

commit b69a110fe28f0153ce2d60d69263658346a080f2
Author: Dale LaBossiere <[email protected]>
Date:   2016-06-07T19:44:36Z

    update expected test result

commit de5799a45998cd77af162456bca227f7bbd5ecfe
Author: Dale LaBossiere <[email protected]>
Date:   2016-06-09T14:51:17Z

    disallow use of pipe() for Peek oplets

----


> Metrics.{counter,rateMeter}() shouldn't use TStream.pipe(); add 
> TStream.peek(Peek)
> ----------------------------------------------------------------------------------
>
>                 Key: QUARKS-195
>                 URL: https://issues.apache.org/jira/browse/QUARKS-195
>             Project: Quarks
>          Issue Type: Bug
>          Components: API
>            Reporter: Dale LaBossiere
>            Assignee: Dale LaBossiere
>            Priority: Minor
>
> Add `TStream.peek(Peek<T>)` and change `Metrics.counter(TStream)` and 
> `Metrics.rateMeter(TStream)` to use it instead of `pipe()`.
> The author of CounterOp and RateMeter implemented the functionality as Peek 
> Oplets not as Consumer functions. Lacking a TStream.peek(Peek), 
> TStream.pipe() must be used to add the Peek oplets to the topology.
> The runtime treats TStream.peek(Consumer) generated Peek oplets rather 
> differently than pipe related oplets (added via pipe() or indirectly via 
> pipe-ish functional methods): see Connector.connect() vs Connector.peek(), 
> and TStream.peek() returns "this" whereas the addition of pipe oplets returns 
> a new TStream. 
> The use of pipe() in this case is partially responsible for the effect 
> reported in QUARKS-189. 
> Adding TStream.peek(Peek) enables users/authors of Peek oplets to get the 
> same peek-ish behavior as their functional peeker brethen.  It continues to 
> flesh out the general ability of API clients to implement and add oplets to 
> the topology.
> The growing number of "oplet" based analogs to the "function" based methods 
> makes me wonder if the oplet ones should be broken out into another interface 
> that TStream implements (`OpletTStream`?).  It would contain the current 
> `pipe(Pipe)`, `fanin(FanIn,List)`, `sink(Sink)`, and the new `peek(Peek)`, 
> and any others that may be needed in the future  - e.g., a `split(Split)` 
> and/or one that can handle multiple iports and oports.
> Instead, TStream.pipe() (ConnectorStream.pipe()) could be modified to deal 
> with Pipe oplet args in the desired manner and document that Pipe oplets 
> receive this special treatment and that pipe() returns "this" for them 
> instead of a new TStream.  Adding TStream.peek(Peek) seems like a clearer 
> alternative, and perhaps oplet.core.Peek should not extend Pipe?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to