geode-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF subversion and git services (Jira)" <j...@apache.org>
Subject [jira] [Commented] (GEODE-7184) Add function execution timers
Date Wed, 23 Oct 2019 23:21:00 GMT

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

ASF subversion and git services commented on GEODE-7184:
--------------------------------------------------------

Commit 7c70b61d8510ce5c79246f21e9a0bb8cfd452439 in geode's branch refs/heads/feature/GEODE-7286
from Aaron Lindsey
[ https://gitbox.apache.org/repos/asf?p=geode.git;h=7c70b61 ]

GEODE-7184: Fix failing windows CI jobs

Thread.sleep() is not guaranteed to sleep for the given duration. Add
new method for testing which sleeps for at least as long as the given
duration.

Co-authored-by: Aaron Lindsey <alindsey@pivotal.io>
Co-authored-by: Kirk Lund <klund@apache.org>


> Add function execution timers
> -----------------------------
>
>                 Key: GEODE-7184
>                 URL: https://issues.apache.org/jira/browse/GEODE-7184
>             Project: Geode
>          Issue Type: Improvement
>            Reporter: Aaron Lindsey
>            Assignee: Aaron Lindsey
>            Priority: Major
>          Time Spent: 5h 40m
>  Remaining Estimate: 0h
>
> Developers oftentimes deploy their own functions to the system to enable decorator pattern
for caching to add information to specific key/value pairs. In doing so, they can introduce
bottlenecks into the system where server-side functions can cause issues or make things slower
than intended. We want a way that users can view functions that they create, and see what
the average execution time looks like.
>  * *Meter Type*: Timer
>  * *Name*: geode.function.executions
>  * *Description*: TBD
>  * *Tags*: <common_tags>, function (getId on function, if DNE present getClass.getname
of deployed function), succeeded (true/false)
> h3. Acceptance Criteria
> *Meter creation/deletion*: Create meter on function execution
> *Measurement*: On an individual server, start the timer when a *USER* function is invoked/executed,
and stop the timer when the user function completes OR errors. If it throws a Function Execution
or another error then the tag function.isSuccessful=false
> Details on Functions and their execution: [https://geode.apache.org/docs/guide/110/developing/function_exec/function_execution.html]
> h3. Scenarios
> *Scenario: The timers are created when the function is first executed*
> Given a user executed a function with ID functionToTime on a cluster with 1 locator/1
server
> And functionToTime has not been executed previously
> Then the server has the following timer:
> - name: geode.function.executions
> - tag: id = functionToTime
> - tag: succeeded = true
> - count > 1
> - totalTime >= 5,000,000,000ns
> And the server has the following timer:
> - name: geode.function.executions
> - tag: id = functionToTime
> - tag: succeeded = false
> - count = 0
> - totalTime = 0
> *Scenario: Successful singular function execution (registered execution)*
> Given a user registers a function with ID functionToTime (that waits for 5 seconds) on
a cluster with 1 locator/1 server
> When functionToTime is triggered using gfsh command: "execute function --id=functionToTime"
> And the function completes without error
> Then the server has the following timer:
> - name: geode.function.executions
> - tag: id = functionToTime
> - tag: succeeded = true
> - count = 1
> - totalTime >= 5,000,000,000ns
> *Scenario: Successful singular function execution (unregistered execution)*
> Given an unregistered function with ID functionToTime (that waits for 5 seconds) exists

> When triggered on a client using  "FunctionService.onServers(cache).execute(new FunctionToTime())"
> And the function completes without error
> Then the server has the following timer:
> - name: geode.function.executions
> - tag: id = functionToTime
> - tag: succeeded = true
> - count = 1
> - totalTime >= 5,000,000,000ns
> *Scenario: Singular function execution with Any Exception*
> Given an unregistered function with ID functionToTime (that waits for 5 seconds) exists

> When triggered on a client using  "FunctionService.onServers(cache).execute(new FunctionToTime())"
> And the function exits with a Any exception error after running for 5 seconds
> Then the server has the following timer:
> - name: geode.function.executions
> - tag: id = functionToTime
> - tag: succeeded = false
> - count = 1
> - totalTime >= 5,000,000,000ns
> *Scenario: Function execution onRegion multi-server*
> Given a cluster with 1 locator (named L1) as well as 2 servers (named S1,S2)
> And a region called RR1 that is a replicate region
> When a function execution is triggered against that replicate region using  "FunctionService.onRegion(regionRR1).execute(new
FunctionToTime())"
> Then one server has the following timer:
> - name: geode.function.executions
> - tag: id = functionToTime
> - tag: succeeded = true
> - count = 1
> - totalTime >= 5,000,000,000ns
> And the other server has the following timer:
> - name: geode.cache.function.executions
> - tag: id = functionToTime
> - tag: succeeded = true
> - count = 0
> - totalTime = 0
> *Scenario: Function execution onRegion with partition region multiple times*
> *Scenario: Function execution onRegion multi-server*
> Given a cluster with 1 locator (named L1) as well as 2 servers (named S1,S2)
> And a partition region called PR1 that only exists on S1
> When a function execution is triggered 10 times against that replicate region using 
"FunctionService.onRegion(regionPR1).execute(new FunctionToTime())"
> Then S1 has the following timer:
> - name: geode.function.executions
> - tag:id = functionToTime
> - tag:succeeded = true
> - count = 10
> And S2 has the following timer:
> - name: geode.cache.function.executions
> - tag:id = functionToTime
> - tag:succeeded = true
> - count = 0
> *Scenario: Function execution onRegion with replicate region multiple times*
> *Scenario: Function execution onRegion multi-server*
> Given a cluster with 1 locator (named L1) as well as 2 servers (named S1,S2)
> And a replicate region called RR1 exists
> When a function execution is triggered 10 times against that replicate region using 
"FunctionService.onRegion(regionRR1).execute(new FunctionToTime())"
> Then when you aggregate both S1 and S2 server metrics for geode.function.executions with
id:functionToTime with succeeded:true then the total count of the aggregate will be 10



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Mime
View raw message