-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/54107/
-----------------------------------------------------------

(Updated Dec. 1, 2016, 1:53 a.m.)


Review request for Aurora, David McLaughlin, Joshua Cohen, Mehrdad Nurolahzade, 
and Santhosh Kumar Shanmugham.


Changes
-------

added `enable_db_metrics` command line switch to enable intercepting and 
collecting stats. it is enabled by default.

For testing I disabled it (`-use_mybatis_interceptor=false` inside 
`/etc/init/aurora-scheduler.conf`) in my vagrant and `mybatis.*` metrics went 
away.

Not sure if we need an integration test for this.


Repository: aurora


Description
-------

MyBatis allows us to intercept calls within the execution of a mapped 
statement. This allows us to time various mapped statements and ultimately gain 
more insight on the performance of the database module.

This patch introduces an interceptor on MyBatis on `updates` and `query` mapped 
statements. I used the following convention to create name for the newly 
collected stats:
mybatis.<<the id of the mapped statement>>

After interception the process is very similar to the one in 
@Timed-interceptor. SlidingStats can be used to export interval averages, total 
milliseconds and the event counts.

__example stats (from ./vars.json)__
mybatis.create_tables_events 1
mybatis.create_tables_events_per_sec 0.0
mybatis.create_tables_nanos_per_event 0.0
mybatis.create_tables_nanos_total 592633784
mybatis.create_tables_nanos_total_per_sec 0.0
mybatis.org.apache.aurora.scheduler.storage.db.AttributeMapper.selectAll_events 
3
mybatis.org.apache.aurora.scheduler.storage.db.AttributeMapper.selectAll_events_per_sec
 0.0
mybatis.org.apache.aurora.scheduler.storage.db.AttributeMapper.selectAll_nanos_per_event
 0.0
mybatis.org.apache.aurora.scheduler.storage.db.AttributeMapper.selectAll_nanos_total
 2858362
mybatis.org.apache.aurora.scheduler.storage.db.AttributeMapper.selectAll_nanos_total_per_sec
 0.0
mybatis.org.apache.aurora.scheduler.storage.db.AttributeMapper.select_events 333
mybatis.org.apache.aurora.scheduler.storage.db.AttributeMapper.select_events_per_sec
 0.0
mybatis.org.apache.aurora.scheduler.storage.db.AttributeMapper.select_nanos_per_event
 0.0
mybatis.org.apache.aurora.scheduler.storage.db.AttributeMapper.select_nanos_total
 85745680
mybatis.org.apache.aurora.scheduler.storage.db.AttributeMapper.select_nanos_total_per_sec
 0.0


Diffs (updated)
-----

  src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 
e7287cec28e7b8ca978c506bfe821f261bc0ac26 
  
src/main/java/org/apache/aurora/scheduler/storage/db/InstrumentingInterceptor.java
 PRE-CREATION 
  
src/test/java/org/apache/aurora/scheduler/storage/db/InstrumentingInterceptorTest.java
 PRE-CREATION 
  src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 
2e560c0d565689703b282391fe49dbf213ee25dc 
  
src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 
79999e19454568540c14f91808635bf8dff82bb3 

Diff: https://reviews.apache.org/r/54107/diff/


Testing
-------

Tests are covered in InstrumentingInterceptorTest.

- testStatIsCreatedOnce
Tests that each stat is created one time only.

- testInterceptMarksMetrics
Tests that invocation is correctly intercepted and then proceeds.


Thanks,

Reza Motamedi

Reply via email to