greglook / blocks

Clojure content-addressable data storage.
The Unlicense
113 stars 6 forks source link

Metered block store methods #19

Closed greglook closed 6 years ago

greglook commented 6 years ago

WIP - add metrics instrumentation to the block storage methods and block IO.

I decided to take a more general approach here; initially the plan was to use a concrete MeteredBlockStore type which would proxy all methods to some underlying store. This turned out to be a bad approach because certain methods use the extension of a protocol (such as BatchingStore) as a test for when an efficient implementation is available. The metering store would necessarily have to implement these protocols to measure them, which would lead to some code assuming efficient methods were available when in fact they were not.

The current approach instead looks for a :blocks.meter/recorder function on each store, and uses that to report metric events similar to the ones used by Riemann. It is up to the function how to interpret and record the events received.

codecov-io commented 6 years ago

Codecov Report

Merging #19 into develop will increase coverage by 0.76%. The diff coverage is 99.31%.

Impacted file tree graph

@@             Coverage Diff             @@
##           develop      #19      +/-   ##
===========================================
+ Coverage     92.1%   92.86%   +0.76%     
===========================================
  Files           10       11       +1     
  Lines          861      967     +106     
  Branches        49       50       +1     
===========================================
+ Hits           793      898     +105     
  Misses          19       19              
- Partials        49       50       +1
Impacted Files Coverage Δ
src/blocks/data.clj 100% <100%> (ø) :arrow_up:
src/blocks/store/cache.clj 100% <100%> (ø) :arrow_up:
src/blocks/store/buffer.clj 100% <100%> (ø) :arrow_up:
src/blocks/core.clj 98.39% <100%> (+0.24%) :arrow_up:
src/blocks/store/replica.clj 96.15% <100%> (ø) :arrow_up:
src/blocks/meter.clj 98.66% <98.66%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 3bf530c...61a66bb. Read the comment docs.