----------------------------------------------------------- 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